我需要从ASP.NET Web应用程序做到这一点:
Alter Table Contacts Disable Trigger All
-- Do some stuff
Alter Table Contacts Enable Trigger All
在某些情况下, Disable Trigger
声明挂起。 我应该从哪里开始寻找弄清是怎么造成的? 如果我重新启动SQL服务器,又回到正常行为。
我需要从ASP.NET Web应用程序做到这一点:
Alter Table Contacts Disable Trigger All
-- Do some stuff
Alter Table Contacts Enable Trigger All
在某些情况下, Disable Trigger
声明挂起。 我应该从哪里开始寻找弄清是怎么造成的? 如果我重新启动SQL服务器,又回到正常行为。
看到从SSMS活动监视器,看看它为什么块。 或者,你可以看看blocking_session_id
列是sys.dm_exec_requests
。
我的猜测:架构更改需要表上的架构修改锁。 任何操作(比如SELECT,UPDATE等)将放置在桌子上的模式稳定性锁,阻止任何ALTER直到SELECT完成。 因此,禁用触发器ALTER被所有未决表的访问(SELECT)语句blcoked。