惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
U
Unit 42
Google DeepMind News
Google DeepMind News
博客园 - 司徒正美
Y
Y Combinator Blog
F
Fortinet All Blogs
云风的 BLOG
云风的 BLOG
T
Tailwind CSS Blog
G
Google Developers Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
罗磊的独立博客
D
DataBreaches.Net
T
The Blog of Author Tim Ferriss
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
MyScale Blog
MyScale Blog
N
Netflix TechBlog - Medium
Microsoft Security Blog
Microsoft Security Blog
GbyAI
GbyAI
P
Proofpoint News Feed
Jina AI
Jina AI
B
Blog RSS Feed
腾讯CDC
阮一峰的网络日志
阮一峰的网络日志
D
Docker

博客园 - oisiv

java线程池ThreadPoolTaskExecutor执行顺序 css一些特别效果设定 使用jquery模拟键盘事件,但window系统并不会真的响应事件,只是浏览器当前页面会响应而已 base64编码的图片字节流存入html页面中的显示 设置span 宽度的完美解决方案 Mercurial hg web server的配置 DIV撑开 java.net.URLEncode编码 与 URLDecode解码问题 java在CMD环境下执行需注意字符集设定 把MSSQL的表数据查询成 insert into格式的函数 配置jboss4.2.3GA启用SSL html中DIv并排显示问题 鲁迅《兩地書》 java采用Apache FileUpload组件实现上传 js中对象复制以及apply方法的使用 可执行jar包的处理,以及could not find the main class win7/xp 双击执行jar包出现:could not find the main class的问题处理 MSSql性能优化 CSS拼装图片时,确保严丝合缝 在 SQL Server 2008 中新建用户登录并指定该用户的数据库
SQL模擬死結產生
oisiv · 2016-05-28 · via 博客园 - oisiv

引用自:http://jengting.blogspot.tw/2012/06/sql.html

[SQL] 模擬死結產生

在 SSMS 內開啟兩個 T-SQL 查詢(兩個執行緒),利用下面語法來執行,請先執行 T-SQL 查詢 1,再執行 T-SQL 查詢 2。

步驟簡易說明:

  • Step 1:建立一個 T-SQL 查詢 1,開啟一個交易,並進行更新 Supplier 資料
  • Step 2:建立另一個 T-SQL 查詢 2,開啟一個交易,並進行更新 Part
  • Step 3:回到 T-SQL 查詢 1,更新 Part
  • Step 4:回到 T-SQL 查詢 2,更新 Supplier
  • 建立測試資料

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

IF OBJECT_ID('Supplier') IS NOT NULL

  DROP TABLE Supplier

IF OBJECT_ID('Part') IS NOT NULL

  DROP TABLE Part

CREATE TABLE Supplier

  (

    SPLNO char(5),

    SPLName char(10),

    CONSTRAINT [PK_Supplier] PRIMARY KEY CLUSTERED ([SPLNO] ASC)

  )

CREATE TABLE Part

  (

    SPLNO char(5),

    Product char(50),

    CONSTRAINT [PK_Part] PRIMARY KEY CLUSTERED ([SPLNO] ASC,[Product] ASC)

  )

INSERT INTO Supplier VALUES('00000','Microsoft')

INSERT INTO Part VALUES('00000','SQL Server 2012')

  • T-SQL 查詢 1

1

2

3

4

5

BEGIN TRANSACTION

UPDATE Supplier SET SPLName = 'Microsoft' WHERE SPLNO = '00000'

WAITFOR DELAY '00:00:05'

UPDATE Part SET Product = 'SQL Server 2012' WHERE Product = 'SQL Server 2012'

COMMIT TRANSACTION

  • T-SQL 查詢 2

1

2

3

4

5

BEGIN TRANSACTION

UPDATE Part SET Product = 'SQL Server 2012' WHERE Product = 'SQL Server 2012'

WAITFOR DELAY '00:00:05'

UPDATE Supplier SET SPLName = 'Microsoft' WHERE SPLNO = '00000'

COMMIT TRANSACTION

  • 死結錯誤訊息

訊息 1205,層級 13,狀態 45,行 1

交易 (處理序識別碼 52) 在 鎖定 資源上被另一個處理序鎖死並已被選擇作為死結的犧牲者。請重新執行該交易。