插入 [表名] SELECT * FROM [表名]

Bua*_*aXD 1 sql-server locking

我刚刚遇到一个查询:

INSERT [TableName] SELECT * FROM [TableName]
Run Code Online (Sandbox Code Playgroud)

请注意,这是同一张表。这个查询导致我的一个测试数据库严重阻塞(我想删除它但不能,这让我调查了这个问题)。

锁类型为 LCK_M_X。我无法终止会话 - 我收到以下消息:

PID 56:事务回滚正在进行中。预计回滚完成:27%。估计剩余时间:5715216 秒。

我不想等待回滚完成估计 2 个月。数据库的事务隔离级别是READ COMMITED。

是否可以终止此会话?如果您在关键任务数据库之一中发现这样的查询,您应该如何行动?

spa*_*dba 5

该 SPID 已被终止,您将不得不等待回滚过程完成。估计的时间通常非常不准确:别担心。它可能需要 1 到 2 倍的 INSERT 执行时间,直到它被杀死的阶段。

如果这发生在生产中,答案不会有任何不同:等待回滚过程结束。如果强制关闭回滚操作,数据库将不一致。