Kod:
-- Exempel, var säker på att du inte har en tabell som heter tran_show_test
IF NOT EXISTS (SELECT * FROM sys.tables WHERE name LIKE 'tran_show_test')
CREATE TABLE tran_show_test
(counting int NOT NULL IDENTITY(1,1), writing varchar(10), TRANCOUNT int DEFAULT (@@trancount))
GO
-- Troligt scenario precis som Tibor skrev, dvs nästlade transaktioner
BEGIN TRAN
INSERT INTO tran_show_test(writing)
VALUES ('hej')
BEGIN TRAN
INSERT INTO tran_show_test(writing)
VALUES ('hej')
COMMIT -- Din commit
SELECT * FROM tran_show_test
ROLLBACK -- Simulera timeout
SELECT * FROM tran_show_test
BEGIN TRAN
INSERT INTO tran_show_test(writing)
VALUES ('hej')
BEGIN TRAN
INSERT INTO tran_show_test(writing)
VALUES ('hej')
-- Den här loopen stänger alla i din connection öppna transaktioner
-- Kan vara ölite farligt beroende på hur den fortsatta koden i din connection ser ut.
WHILE @@TRANCOUNT > 0
BEGIN
COMMIT -- Commit med hjälp av loop
END
--Här kommer din timeout
SELECT * FROM tran_show_test