SQL 2008表已锁定-can';我不知道为什么

SQL 2008表已锁定-can';我不知道为什么,sql,sql-server-2008,Sql,Sql Server 2008,我在一台SQL 2008服务器上有两个数据库。数据库1似乎导致数据库2上的表被锁定。数据库1上未运行任何会影响数据库2的查询 这是正常的行为吗 使用此命令查看正在运行的查询时 SELECT sqltext.TEXT, req.session_id, req.status, req.command, req.cpu_time, req.total_elapsed_time/1000 [seconds] FROM sys.dm_exec_requests req CROSS APPLY sys.dm

我在一台SQL 2008服务器上有两个数据库。数据库1似乎导致数据库2上的表被锁定。数据库1上未运行任何会影响数据库2的查询

这是正常的行为吗

使用此命令查看正在运行的查询时

SELECT sqltext.TEXT,
req.session_id,
req.status,
req.command,
req.cpu_time,
req.total_elapsed_time/1000 [seconds]
FROM sys.dm_exec_requests req
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS sqltext
它告诉我同样的情况,并说数据库2上的命令已挂起


我有点不知所措。我应该看什么样的东西来找出数据库2中的表被锁定的原因?

运行的查询是不相关的-锁可以来自已运行的查询,并且连接/事务仍然有效(即打开的事务,未提交/回滚),在这种情况下,锁保持不变

您基本上必须识别:

  • 锁定表的连接
  • 命令链在连接中运行

锁源于db所做的操作-因此,除非出现低级严重错误(类似错误的情况下不太可能发生),否则可能是某种原因导致锁生成。

太好了,谢谢Tom。您(或任何人)是否有任何关于我应该如何确定哪些连接/命令锁定了表的提示?设置跟踪-跟踪服务器的所有命令,允许进行筛选。对于连接,请检查带有sp_lock的锁,并查看它会将您带到何处;)