代码之家  ›  专栏  ›  技术社区  ›  Mr. Flibble

SQL 2008表已锁定-无法确定原因

  •  0
  • Mr. Flibble  · 技术社区  · 14 年前

    我在一台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中的表为什么被锁定?

    1 回复  |  直到 14 年前
        1
  •  1
  •   TomTom    14 年前

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

    你基本上必须确认:

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

    锁源于db所做的操作-所以除非您得到一个低级别的关键错误(很可能是这样的错误),否则某些东西导致了锁的生成。