How do you simulate a deadlock for testing purposes
Answer Posted / jay
Below is a quick recipe for a dead lock. Two transactions,
one first updating table 1, then 2 and the other one doing
it in reverse order.
Both transactions wait in the middle for 20 seconds to give
you some time to execute them 'simulaneously'.
When you run the two in transactions in two windows 'at the
same time', you'll only have to wait ~20 seconds, and one of
the windows will experience a dead lock.
CREATE TABLE t1 (i int);
CREATE TABLE t2 (i int);
INSERT t1 SELECT 1;
INSERT t2 SELECT 9;
/* in one window enter: */
BEGIN TRAN
UPDATE t1 SET i = 11 WHERE i = 1
WAITFOR DELAY '00:00:20'
UPDATE t2 SET i = 99 WHERE i = 9
COMMIT
/* in a second window (another transaction) enter: */
BEGIN TRAN
UPDATE t2 SET i = 99 WHERE i = 9
WAITFOR DELAY '00:00:20'
UPDATE t1 SET i = 11 WHERE i = 1
COMMIT
| Is This Answer Correct ? | 8 Yes | 1 No |
Post New Answer View All Answers
How to create a user name in a database?
What is difference between inner join and join?
When we should use and scope of @@identity?
What is row-level compre?
Are semicolons required at the end of sql statements in sql server 2005?
What is usually the first word in a sql query?
What is query optimization process?
Explain foreign key in sql server?
What is the default Port No on which SQL Server listens?
What is the difference between system objects and user objects?
How will you know when statistics on a table are obsolete?
What is difference between equi join and inner join?
How can you stop stored procedures from recompiling?
What are the differences between “row_number()”, “rank()” and “dense_rank()”?
What are logical database components? : SQL Server Architecture