我在一台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中的表被锁定了?
答案 0 :(得分:1)
运行的查询无关紧要 - 锁可以来自DID运行且连接/事务仍然有效的查询(即打开事务,未提交/回滚),在这种情况下锁定保持不变。
你基本上必须要明白:
锁定源自数据库所执行的操作 - 因此,除非您遇到低级别的严重错误(非常不可能出现类似错误),否则会导致锁定生成。