2010-10-28 38 views

Trả lời

7

Giao dịch zombie là giao dịch không thể thực hiện được (do lỗi không thể khôi phục) nhưng vẫn mở.

CREATE TABLE mytable (id INT NOT NULL PRIMARY KEY) 
SET XACT_ABORT ON; 
BEGIN TRY 
     BEGIN TRANSACTION 
       INSERT 
       INTO mytable 
       VALUES (1) 
       INSERT 
       INTO mytable 
       VALUES (1) 
     COMMIT 
END TRY 
BEGIN CATCH 
     PRINT XACT_STATE() 
     SELECT * 
     FROM mytable 
     ROLLBACK; 
END CATCH 
SELECT * 
FROM mytable 

Ở đây, lần thứ hai INSERT hiển thị zombie giao dịch.

Nó không thể viết được nữa và nên được khôi phục, nhưng bạn vẫn có thể đọc trong phạm vi của nó (trong cùng SELECT trả về một bản ghi, ngoài cùng không).

+3

Và bạn cần một dao rựa hoặc súng ngắn để loại bỏ nó! ... Người đàn ông, tôi yêu I.T. công việc. 80) – Keng

Các vấn đề liên quan