6
Tôi vô tình tìm thấy zombie transaction
được đề cập trong mã SqlTransaction
. Vì vậy, giao dịch zombie là gì?Giao dịch zombie là gì?
Tôi vô tình tìm thấy zombie transaction
được đề cập trong mã SqlTransaction
. Vì vậy, giao dịch zombie là gì?Giao dịch zombie là gì?
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).
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