【问题标题】:SQL - Table waiting for Commit/Rollback after closing sessionSQL - 关闭会话后等待提交/回滚的表
【发布时间】:2017-07-04 03:23:18
【问题描述】:

我有一个没有任何索引的大表,大约有 2750 万行。 我尝试使用BEGIN TRAN 删除大约一半的人。 然后我尝试取消查询,但由于耗时较长,我决定关闭 Management Studio。
现在,当我尝试查看该表时,它不会返回任何内容,只是继续运行。
当我运行 SELECT TOP 10 * FROM Tbl 时,它只是执行而不返回任何内容。
但是当我运行 SELECT TOP 10 * FROM Tbl(NOLOCK) 它返回 10 行。
这告诉我它正在等待来自我的BEGIN TRANRollback/Commit
我以为它会在关闭会话和 Management Studio 后自动回滚。
我该如何解决这个问题?

谢谢。

【问题讨论】:

  • 也许您应该关闭与数据库的连接?
  • @ProgrammingBaKa 我读过它,它说一旦我关闭会话它就应该回滚它。我已经关闭了它,但它仍然显示为锁定状态。如何关闭与 DB 的连接?
  • 我会说尝试关闭连接,但我认为如果使用管理工作室,应该通过关闭查询窗口来终止/关闭连接。
  • 要关闭连接,如果您有 mac,您是否尝试从任务管理器或活动监视器中终止 sqlserver.exe?

标签: sql sql-server rollback locked


【解决方案1】:

执行 SP:SP_LOCK

在结果中,您将获得 SPID、DBID、OBJID、INDID、TYPE、RESOURCE、 模式、状态
现在检查状态列,如果它显示等待,那么

杀死那个 SPID。要杀死特定的 SPID 执行 SP:Kill 65(其中 65 是 SPID)

MSDN Forum

【讨论】:

  • 希望我能在终止任务之前尝试一下。我会记住这一点。
【解决方案2】:

显然,这行得通:

终止/关闭与数据库的连接将解决此问题。要关闭连接,您可以尝试从任务管理器或活动监视器中终止 sqlserver.exe(如果您有 Mac)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-11
    • 2020-08-13
    • 1970-01-01
    相关资源
    最近更新 更多