我会假设一个未提交的事务对至少一个与您的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