Tôi có một trang web khách hàng với hai Máy chủ SQL 2008r2 được cấu hình tương tự "A" và "C". Trên cả hai máy chủ, cờ theo dõi 1204 và 1222 được bật và DBCC tracestatus
hiển thị như sau trên cả hai máy chủ:
TraceFlag Status Global Session
1204 1 1 0
1222 1 1 0
3605 1 1 0
Trên A cờ theo dõi hoạt động như mong đợi, khi xảy ra bế tắc, chúng tôi nhận được cả báo cáo bế tắc 1204 và 1222 trong nhật ký lỗi. Tuy nhiên, trên C, chỉ có báo cáo 1204 xuất hiện, chúng tôi không bao giờ nhận được báo cáo 1222.
Đối với cuộc sống của tôi, tôi không thể thấy bất kỳ lý do cho sự khác biệt này. Tôi đã mở rộng cả hai điều này và đọc (và đọc lại) tài liệu MS trên các cờ theo dõi này và tôi không thể tìm thấy bất kỳ báo cáo nào về hành vi như thế này, cũng như bất kỳ gợi ý nào về những gì có thể gây ra nó. Điều duy nhất đến gần là thỉnh thoảng tuyên bố rằng không có cờ theo dõi nào hoạt động, nhưng tất cả những điều này hóa ra là trường hợp chúng có lỗi chính tả trong các lệnh kích hoạt. Tôi biết rằng đây không phải là trường hợp ở đây vì tôi đã sử dụng DBCC TRACESTATUS để xác nhận nó.
Vì vậy, bất kỳ cái nhìn sâu vào những gì có thể gây ra chỉ dấu vết cờ 1222 để không làm việc và / hoặc làm thế nào để sửa chữa nó sẽ được đánh giá rất nhiều.
Vâng, đây là một sự phát triển thú vị. Bất cứ khi nào tôi tự tạo bế tắc (sử dụng mã này: /programming/7813321/how-to-deliberingly-cause-a-deadlock ), sau đó tôi nhận được cả báo cáo theo dõi trong nhật ký lỗi. Đó chỉ là những bế tắc "tự nhiên" xảy ra cứ sau vài ngày từ các ứng dụng dường như chỉ kích hoạt một trong những báo cáo bế tắc. Không chắc chắn nếu điều này có ích, có lý do nào để tin rằng dấu vết 1222 sẽ không báo cáo về tất cả các điều kiện bế tắc tương tự mà 1204 sẽ không?
<inputbuf> BEGIN TRAN UPDATE dbo.DeadLockTest2 SET col1 = 1 UPDATE dbo.DeadLockTest SET col1 = 1 </inputbuf>
; mode="X" associatedObjectId="72057594039107584"
. Tui bỏ lỡ điều gì vậy ? Tôi đã sử dụngSELECT CAST(xet.target_data AS XML) AS XMLDATA FROM sys.dm_xe_session_targets xet JOIN sys.dm_xe_sessions xe ON (xe.address = xet.event_session_address) WHERE xe.name = 'system_health'