SQL Server禁用所有触发器 - 找不到对象“XXXX”,因为它不存在或您没有权限

时间:2011-08-24 14:00:03

标签: sql-server permissions database-permissions

我正在尝试在SQL Server中运行此命令:

disable trigger all on MYDB

这对我来说是失败的。我登录的帐户可以访问MYDB,我几乎可以获得每个可用的权限(它只是本地数据库和我的帐户,所以这没关系)。我不明白为什么它告诉我它找不到MYDB呢?我之前做过这个。另请注意:我可以从数据库中进行选择,更新并运行grant语句(例如授予proc的执行权限)。我也可以手动禁用触发器......

那为什么会失败呢?我之前能够做到......

感谢。

3 个答案:

答案 0 :(得分:75)

sp_msforeachtable 'ALTER TABLE ? DISABLE TRIGGER all'

要启用所有触发器,您可以使用以下语句

sp_msforeachtable 'ALTER TABLE ? ENABLE TRIGGER all'

答案 1 :(得分:0)

use MYDB;
disable trigger all on DATABASE;

答案 2 :(得分:0)

不确定为什么Yuck删除了他们的答案。来自DISABLE TRIGGER

  

<强> OBJECT_NAME    是创建DML触发器trigger_name以执行的表或视图的名称。

也就是说,您无法为此语句提供数据库名称。虽然MYDB 数据库存在,但不是其中的一个名为MYDB的对象。