【发布时间】: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