加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server – 模拟死锁的代码

发布时间:2020-12-12 06:15:11 所属栏目:MsSql教程 来源:网络整理
导读:我正在测试我的应用程序我需要一些稳定模拟数据库站点上的死锁的代码(如果可能的话,sql脚本). 谢谢. 添加: Reproducing deadlocks involving only one table 解决方法 最好的方法是使用已有的表格. 创建两个表 – table-a,table-b 对于测试,您甚至可以使用相
我正在测试我的应用程序我需要一些稳定模拟数据库站点上的死锁的代码(如果可能的话,sql脚本).

谢谢.

添加:

Reproducing deadlocks involving only one table

解决方法

最好的方法是使用已有的表格.
创建两个表 – table-a,table-b
对于测试,您甚至可以使用相同的信息更新同一列
所以你不会影响任何真实的数据.

例如
UPDATE table_a set ID = ID,其中ID = 100;

打开两个会话到同一个数据库.
一,运行

BEGIN TRAN
update table_a set ID=ID where ID = 100;

两跑

BEGIN TRAN
update table_b set ID=ID where ID =100;

然后,将更新语句复制到对方会话并同时运行.
在一个,

update table_b set ID=ID where ID =100;

成两半

update table_a set ID=ID where ID = 100;

我刚刚尝试了这个并开始使用MS-SQL

Msg 1205,Level 13,State 56,Line 1
Transaction (Process ID 23) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读