禁用触发器挂起?

时间:2010-01-11 22:11:23

标签: sql sql-server triggers

我需要从ASP.NET网络应用程序执行此操作:

Alter Table Contacts Disable Trigger All 
-- Do some stuff
Alter Table Contacts Enable Trigger All

在某些情况下,Disable Trigger语句会挂起。我应该从哪里开始寻找导致这种情况的原因?如果我重新启动SQL服务器,它会恢复正常运行。

1 个答案:

答案 0 :(得分:3)

从SSMS查看活动监视器以查看 它阻止的原因。或者,您可以查看blocking_session_idsys.dm_exec_requests

我的猜测:架构更改需要对表进行架构修改锁定。任何操作(如SELECT,UPDATE等)都会在表上放置一个模式稳定性锁,阻止任何ALTER直到SELECT完成。因此,所有挂起表访问(SELECT)语句都会禁用“禁用触发器ALTER”。