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
What are “lock” hints?
How to implement service broker?
What is usually the first word in a sql query?
What is the recovery model?
Differentiate between a having clause and a where clause.
tell me what is blocking and how would you troubleshoot it? : Sql server database administration
what is an extended stored procedure? : Sql server database administration
What is a derived table?
What is the process of normalization?
What are secondary xml indexes?
Can we do dml on views?
Explain the phases a transaction has to undergo?
Explain filtered indexes benefits?
How to create user defined functions with parameters?
What is the parse query button used for?