【问题标题】:SQL Server 2008R2: 'DELETE FROM' hangs forever, but 'SELECT' works fineSQL Server 2008R2:“DELETE FROM”永远挂起,但“SELECT”工作正常
【发布时间】:2013-04-05 15:20:12
【问题描述】:

无论如何,我都不是 DBA,所以我迷路了。我有一张有 152,000 行的表。我正在尝试执行此语句:

DELETE FROM FILES WHERE Asset_Id = 340

它会永远挂在查询窗口中——只是说“正在执行查询...”。此语句工作正常:

SELECT * FROM FILES

我还有一份我尝试过删除语句的数据库副本,它在不到几秒钟的时间内运行,没有任何问题。所以那张桌子肯定有什么问题。这里可能发生了什么?它影响了我的网络应用程序的功能。

谢谢。

【问题讨论】:

  • 表上的任何触发器或参照完整性?另外,当它挂起时,请查看sys.dm_os_waiting_tasks
  • Google 告诉我参照完整性意味着该表中有一个列被数据库中的所有其他表引用,但事实并非如此......
  • 任何引用 FILES 的外键需要验证或可能具有级联操作。
  • 没有级联动作的外键,但是这个表的File_Id列有外键,是的。
  • 它们是大桌子吗?这些列是否已编入索引?但是先看看sys.dm_os_waiting_tasks,看看是不是被什么东西屏蔽了。

标签: sql-server database sql-server-2008-r2 delete-row table-locking


【解决方案1】:

听起来您需要一个 Asset_Id 索引。

【讨论】:

  • 并非如此。这显然不会“永远”挂在这么小的桌子上。
  • 这是我刚才在 cmets 中的问题。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-30
  • 1970-01-01
  • 1970-01-01
  • 2020-01-14
  • 2018-09-24
  • 1970-01-01
相关资源
最近更新 更多