2010-11-18 26 views
8

Khi chạy sp_who2, có vẻ như một trong các lệnh SQL của tôi đang chặn nhưng đang chờ quá trình "Ngủ" và "Đang chờ lệnh". Điều này không có ý nghĩa gì cả.sp_who2 Quy trình ngủ BlkBy Đang chờ lệnh

alt text

Bất kỳ ý tưởng nào có thể gây ra điều này? Tôi biết DELETE đang chạy bên trong một giao dịch mà trước đó đã chèn rất nhiều hàng vào bảng, đó có phải là vấn đề không?

Trả lời

11

Bạn có thể có một giao dịch mở trên SPID 98. Một SPID chặn không phải là hoạt động

Hãy thử điều này, hãy nhìn vào open_tran cột

SELECT 
    p1.SPID AS blockedSPID, p2.SPID AS blockingSPID, ... 
FROM 
    master..sysprocesses p1 
    JOIN 
    master..sysprocesses p2 ON p1.blocked = p2.spid 

Tiếp theo, this script gives bạn mở giao dịch, SQL cuối cùng và kế hoạch.

Và có một chi của KB 224453 cho biện pháp tốt

+1

Đây là vấn đề với SSRS không tái sử dụng kết nối mà tôi đã mở giao dịch (do đó không bao giờ đóng giao dịch), điều này cuối cùng có nghĩa là có một giao dịch mở đang giữ một khóa trên bàn. Cảm ơn đã giúp đỡ! –

0

Mà không biết SQLs bạn đang chạy nó sẽ là vô cùng khó khăn để nói. Nhưng dựa trên kịch bản Xóa/Chèn, không thể bạn đã bắt đầu một giao dịch để chèn và sau đó bạn đã mở một giao dịch khác để xóa một số bản ghi đã chèn mà không cần giao dịch trước đó?

Tôi đã thấy loại sự cố này trước đây và đây là cách nó thể hiện chính nó.

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