U kunt een impasse creëren door de onderstaande stappen te volgen. Maak eerst de globale tijdelijke tabellen met voorbeeldgegevens.
--Two global temp tables with sample data for demo purposes.
CREATE TABLE ##Employees (
EmpId INT IDENTITY,
EmpName VARCHAR(16),
Phone VARCHAR(16)
)
GO
INSERT INTO ##Employees (EmpName, Phone)
VALUES ('Martha', '800-555-1212'), ('Jimmy', '619-555-8080')
GO
CREATE TABLE ##Suppliers(
SupplierId INT IDENTITY,
SupplierName VARCHAR(64),
Fax VARCHAR(16)
)
GO
INSERT INTO ##Suppliers (SupplierName, Fax)
VALUES ('Acme', '877-555-6060'), ('Rockwell', '800-257-1234')
GO
Open nu twee lege queryvensters in SSMS. Plaats de code voor sessie 1 in het ene vraagvenster en de code voor sessie 2 in het andere vraagvenster. Voer vervolgens elk van de twee sessies stap voor stap uit en ga zo nodig heen en weer tussen de twee queryvensters. Merk op dat elke transactie een vergrendeling heeft op een resource waarvoor de andere transactie ook een vergrendeling aanvraagt.
Session 1 | Session 2
===========================================================
BEGIN TRAN; | BEGIN TRAN;
===========================================================
UPDATE ##Employees
SET EmpName = 'Mary'
WHERE EmpId = 1
===========================================================
| UPDATE ##Suppliers
| SET Fax = N'555-1212'
| WHERE SupplierId = 1
===========================================================
UPDATE ##Suppliers
SET Fax = N'555-1212'
WHERE SupplierId = 1
===========================================================
<blocked> | UPDATE ##Employees
| SET Phone = N'555-9999'
| WHERE EmpId = 1
===========================================================
| <blocked>
===========================================================
Een impasse resulteert; één transactie is voltooid en de andere transactie wordt afgebroken en foutmelding 1205 wordt naar de klant gestuurd.
Sluit de SSMS-queryvensters voor "Sessie 1" en "Sessie 2" om openstaande transacties vast te leggen (of terug te draaien). Ten slotte, ruim de tijdelijke tabellen op:
DROP TABLE ##Employees
GO
DROP TABLE ##Suppliers
GO