让我们说我通过创建一个具有无限循环的触发器来做一些非常愚蠢的事情。它没有嵌套或递归;我只有一个WHILE
循环,显然没有退出。
现在我无法访问触发器...我无法更新它,无法删除它,无法禁用它。我使用它附加的表的任何程序都不会因为它而对表做任何事情。我已经退出了SQL Server,但是当我重新进入时,我遇到了同样的问题。
任何杀死触发器的方法?
答案 0 :(得分:3)
如果您拥有必要的权限,则可以执行以下操作:
打开/运行SSMS并连接到相关服务器。 更改为使用正确的数据库
在SSMS中,运行SP_Who2
这将为您提供所有连接及其状态的列表。
接受任何一个连接SPID#
并运行DBCC INPUTBUFFER (SPID#)
如果该连接正在运行您的触发器,您可以通过发出KILL SPID#
然后阅读为什么要避免触发器。