我會假設一個未提交的事務對至少一個與您的SELECT
查詢所需的共享鎖不兼容的行或頁面持有鎖定。
要解決此問題,您可以在一個SSMS窗口中執行您的SELECT ...
查詢失敗。
然後在第二個窗口中,第一個查詢仍在執行並被阻止運行the following script。
這應該向您顯示有問題的SQL以及足夠的詳細信息以對其進行故障排除。
SELECT Blocking.session_id AS BlockingSessionId,
Sess.login_name AS BlockingUser,
BlockingSQL.text AS BlockingSQL,
Waits.wait_type WhyBlocked,
Blocked.session_id AS BlockedSessionId,
USER_NAME(Blocked.user_id) AS BlockedUser,
BlockedSQL.text AS BlockedSQL,
DB_NAME(Blocked.database_id) AS DatabaseName
FROM sys.dm_exec_connections AS Blocking
INNER JOIN sys.dm_exec_requests AS Blocked
ON Blocking.session_id = Blocked.blocking_session_id
INNER JOIN sys.dm_os_waiting_tasks AS Waits
ON Blocked.session_id = Waits.session_id
RIGHT OUTER JOIN sys.dm_exec_sessions Sess
ON Blocking.session_id = Sess.session_id
CROSS APPLY sys.dm_exec_sql_text(Blocking.most_recent_sql_handle) AS BlockingSQL
CROSS APPLY sys.dm_exec_sql_text(Blocked.sql_handle) AS BlockedSQL
ORDER BY BlockingSessionId,
BlockedSessionId
聽起來更像是一個僵局 – 2010-10-20 17:40:05
可能想用sp_who2看看,看看,如果你正在阻止任何人(blkby)會。 http://sqlserverplanet.com/dba/using-sp_who2/ – Jay 2010-10-20 17:44:08
什麼是「DBCC CHECKDB('DB名稱')WITH NO_INFOMSGS」的結果? – TToni 2010-10-20 17:45:03