Hãy nhớ rằng có những lỗi mà TRY-CATCH sẽ không nắm bắt được có hoặc không có XACT_ABORT
.
Tuy nhiên, SET XACT_ABORT ON
không ảnh hưởng đến việc bẫy lỗi. Nó đảm bảo rằng bất kỳ giao dịch nào cũng được khôi phục / hủy diệt. Khi "TẮT", thì bạn vẫn có lựa chọn cam kết hoặc khôi phục (tùy thuộc vào xact_state). Đây là thay đổi hành vi chính của SQL 2005 đối với XACT_ABORT
Những gì nó cũng làm là loại bỏ các ổ khóa, v.v. nếu thời gian chờ lệnh của máy khách bắt đầu và máy khách gửi chỉ thị "hủy bỏ". Không có SET XACT_ABORT
, khóa có thể vẫn còn nếu kết nối vẫn mở. Đồng nghiệp của tôi (một MVP) và tôi đã kiểm tra kỹ điều này vào đầu năm.