我需要从ASP.NET网络应用程序执行此操作:
Alter Table Contacts Disable Trigger All
-- Do some stuff
Alter Table Contacts Enable Trigger All
在某些情况下,Disable Trigger
语句会挂起。我应该从哪里开始寻找导致这种情况的原因?如果我重新启动SQL服务器,它会恢复正常运行。
答案 0 :(得分:3)
从SSMS查看活动监视器以查看 它阻止的原因。或者,您可以查看blocking_session_id
列sys.dm_exec_requests
。
我的猜测:架构更改需要对表进行架构修改锁定。任何操作(如SELECT,UPDATE等)都会在表上放置一个模式稳定性锁,阻止任何ALTER直到SELECT完成。因此,所有挂起表访问(SELECT)语句都会禁用“禁用触发器ALTER”。