6
우연히 zombie transaction
이 SqlTransaction
코드에 언급되어 있습니다. 그렇다면 좀비 거래 란 무엇입니까?좀비 거래 란 무엇입니까?
우연히 zombie transaction
이 SqlTransaction
코드에 언급되어 있습니다. 그렇다면 좀비 거래 란 무엇입니까?좀비 거래 란 무엇입니까?
좀비 트랜잭션은 (복구 할 수없는 오류로 인해) 커밋 할 수 없지만 여전히 열려있는 트랜잭션입니다.
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
여기서 두 번째 INSERT
은 트랜잭션 좀비를 렌더링합니다.
더 이상 쓸 수 없으며 롤백해야하지만 범위는 여전히 읽을 수 있습니다 (가장 안쪽의 SELECT
은 레코드를 반환하고 가장 바깥 쪽은 그렇지 않습니다).
그리고 너는 그것을 없애기 위해 벌레 나 산탄 총이 필요해! ... 이봐, 나는 나 사랑해. 작업. 80) – Keng