查看: 508|回复: 2

模拟SQLSERVER 2005共享锁引起的死锁 死锁示例

 关闭 [复制链接]

签到天数: 2091 天

连续签到: 3 天

[LV.Master]伴坛终老IIII

发表于 2009-9-25 22:45 | 显示全部楼层 |阅读模式
模拟SQLSERVER 2005共享锁引起的死锁 死锁示例
5.1 SQL死锁

(1). 测试用的基础数据:

CREATE TABLE Lock1(C1 int default(0));
CREATE TABLE Lock2(C1 int default(0));
INSERT INTO Lock1 VALUES(1);
INSERT INTO Lock2 VALUES(1);


(2). 开两个查询窗口,分别执行下面两段sql
--Query 1
Begin Tran
Update Lock1 Set C1=C1+1;
WaitFor Delay '00:01:00';
SELECT * FROM Lock2
Rollback Tran;

--Query 2
Begin Tran
Update Lock2 Set C1=C1+1;
WaitFor Delay '00:01:00';
SELECT * FROM Lock1
Rollback Tran;

3)、测试完后删除这两张表。
drop table Lock1;
drop table Lock2;
PCOS系统下载站:http://zhuangji.wang

签到天数: 2091 天

连续签到: 3 天

[LV.Master]伴坛终老IIII

 楼主| 发表于 2009-9-25 22:45 | 显示全部楼层

模拟SQLSERVER 2005共享锁引起的死锁 死锁示例

模拟SQLSERVER 2005共享锁引起的死锁 死锁示例
5.1 SQL死锁

(1). 测试用的基础数据:

CREATE TABLE Lock1(C1 int default(0));
CREATE TABLE Lock2(C1 int default(0));
INSERT INTO Lock1 VALUES(1);
INSERT INTO Lock2 VALUES(1);


(2). 开两个查询窗口,分别执行下面两段sql
--Query 1
Begin Tran
Update Lock1 Set C1=C1+1;
WaitFor Delay '00:01:00';
SELECT * FROM Lock2
Rollback Tran;

--Query 2
Begin Tran
Update Lock2 Set C1=C1+1;
WaitFor Delay '00:01:00';
SELECT * FROM Lock1
Rollback Tran;

3)、测试完后删除这两张表。
drop table Lock1;
drop table Lock2;
PCOS系统下载站:http://zhuangji.wang

签到天数: 2091 天

连续签到: 3 天

[LV.Master]伴坛终老IIII

 楼主| 发表于 2009-9-25 22:45 | 显示全部楼层

模拟SQLSERVER 2005共享锁引起的死锁 死锁示例

模拟SQLSERVER 2005共享锁引起的死锁 死锁示例
5.1 SQL死锁

(1). 测试用的基础数据:

CREATE TABLE Lock1(C1 int default(0));
CREATE TABLE Lock2(C1 int default(0));
INSERT INTO Lock1 VALUES(1);
INSERT INTO Lock2 VALUES(1);


(2). 开两个查询窗口,分别执行下面两段sql
--Query 1
Begin Tran
Update Lock1 Set C1=C1+1;
WaitFor Delay '00:01:00';
SELECT * FROM Lock2
Rollback Tran;

--Query 2
Begin Tran
Update Lock2 Set C1=C1+1;
WaitFor Delay '00:01:00';
SELECT * FROM Lock1
Rollback Tran;

3)、测试完后删除这两张表。
drop table Lock1;
drop table Lock2;
PCOS系统下载站:http://zhuangji.wang

本版积分规则