如何在无限循环中停止触发器?
How do I stop a trigger in an infinite loop?
假设我创建了一个包含无限循环的触发器,这确实很愚蠢。它不是嵌套或递归的;我只有一个 WHILE
循环,显然没有退出。
现在我根本无法访问触发器...我无法更新它,无法删除它,无法禁用它。我的 none 程序使用 table 它所附加的可以用 table 做任何事情,因为它。我已经退出 SQL 服务器,但当我重新进入时,我遇到了同样的问题。
有什么方法可以杀死那个触发器?
只要您拥有必要的权限,您可以执行以下操作:
打开/运行 SSMS 并连接到有问题的服务器。
更改为使用正确的数据库
在 SSMS 中,运行SP_Who2
这为您提供了所有连接及其状态的列表。
任意连接SPID#
和运行DBCC INPUTBUFFER (SPID#)
如果该连接正在 运行 触发您的触发器,您可以通过发出 KILL SPID#
来终止连接
然后继续阅读为什么要避免触发。
假设我创建了一个包含无限循环的触发器,这确实很愚蠢。它不是嵌套或递归的;我只有一个 WHILE
循环,显然没有退出。
现在我根本无法访问触发器...我无法更新它,无法删除它,无法禁用它。我的 none 程序使用 table 它所附加的可以用 table 做任何事情,因为它。我已经退出 SQL 服务器,但当我重新进入时,我遇到了同样的问题。
有什么方法可以杀死那个触发器?
只要您拥有必要的权限,您可以执行以下操作:
打开/运行 SSMS 并连接到有问题的服务器。 更改为使用正确的数据库
在 SSMS 中,运行SP_Who2
这为您提供了所有连接及其状态的列表。
任意连接SPID#
和运行DBCC INPUTBUFFER (SPID#)
如果该连接正在 运行 触发您的触发器,您可以通过发出 KILL SPID#
然后继续阅读为什么要避免触发。