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

Sql server SQL Server禁用所有触发器-找不到对象;XXXX“;因为它不存在或您没有权限,sql-server,permissions,database-permissions,Sql Server,Permissions,Database Permissions,我正在尝试在SQL Server中运行此命令: disable trigger all on MYDB 这对我来说是失败的。我登录的帐户可以访问MYDB,我几乎已经给了它所有可用的权限(这是一个本地DB,只有我的帐户,所以这是可以的)。我不明白为什么它告诉我它找不到我的数据库?我以前做过这个。另请注意:我可以从数据库中选择、更新和运行grant语句(例如授予proc的执行)。我也可以手动禁用触发器 那么,为什么会失败呢?我以前能做到的 谢谢。不知道为什么恶心删除了他们的答案。发件人: use

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

disable trigger all on MYDB
这对我来说是失败的。我登录的帐户可以访问MYDB,我几乎已经给了它所有可用的权限(这是一个本地DB,只有我的帐户,所以这是可以的)。我不明白为什么它告诉我它找不到我的数据库?我以前做过这个。另请注意:我可以从数据库中选择、更新和运行grant语句(例如授予proc的执行)。我也可以手动禁用触发器

那么,为什么会失败呢?我以前能做到的


谢谢。

不知道为什么恶心删除了他们的答案。发件人:

use MYDB;
disable trigger all on DATABASE;
对象名称 要在其上执行DML触发器名称的表或视图的名称

也就是说,不能为此语句提供数据库名称。虽然
MYDB
数据库存在,但其中没有名为
MYDB
的对象

sp_msforeachtable 'ALTER TABLE ? DISABLE TRIGGER all'
要启用所有触发器,可以使用以下语句

sp_msforeachtable 'ALTER TABLE ? ENABLE TRIGGER all'

你能发布实际的错误消息吗?我肯定它没有说
XXXX
。用数据库名称替换XXX,并且完全相同。因为我的评论,恶心删除了他的答案。由于某些原因,禁用数据库上的所有触发器不会执行任何操作。。。表示成功,但所有触发器都已启用。但从结构上来说,禁用触发器是有意义的。是的,这是有意义的,但出于某种原因,所有触发器都已启用。。。。奇怪,奇怪。。。此用法由Microsoft声明:,我只是更正您的语法。我知道,我也这么认为。它确实可以工作,但刷新和触发器仍然处于启用状态。。。不知道为什么…看看这些文档,我猜这只适用于在数据库作用域上声明的触发器,而不适用于在表事件上声明的触发器。注意-如果您的数据库区分大小写,那么您必须使用spmsforeachtable。我必须在存储过程之前使用
exec
,例如
exec sp\u msforeachtable“ALTER TABLE?”?禁用触发所有'工作!不过有一点值得注意。在Azure SQL中没有sp_msforeachtable,因此您必须创建它。调查