SQL Server отключает все триггеры - не удается найти объект «XXXX», так как он не существует или у вас нет разрешений - PullRequest
25 голосов
/ 24 августа 2011

Я пытаюсь запустить эту команду в SQL Server:

disable trigger all on MYDB

Это не для меня. Учетная запись, в которую я вошел, имеет доступ к MYDB, и я в значительной степени даю ей каждое доступное разрешение (это только локальная БД и моя учетная запись, так что все в порядке). Я не понимаю, почему он говорит, что не может найти MYDB для этого? Я делал это раньше. Также обратите внимание: я могу выбрать из базы данных, обновить и запустить оператор предоставления (например, предоставление выполнения процесса). Я также могу отключить триггеры вручную ...

Так почему же это не удается? Я мог сделать это раньше ...

Спасибо.

Ответы [ 3 ]

76 голосов
/ 24 августа 2011
sp_msforeachtable 'ALTER TABLE ? DISABLE TRIGGER all'

Чтобы включить все триггеры, вы можете использовать следующую инструкцию

sp_msforeachtable 'ALTER TABLE ? ENABLE TRIGGER all'
0 голосов
/ 24 августа 2011

Не уверен, почему Юк удалил свой ответ. От ОТКЛЮЧИТЬ ТРИГГЕР :

object_name Имя таблицы или представления, для которого было создано имя триггера триггера DML для выполнения.

То есть вы не можете указать имя базы данных для этого оператора. В то время как база данных MYDB существует, не является объектом внутри нее, называемым MYDB.

0 голосов
/ 24 августа 2011
use MYDB;
disable trigger all on DATABASE;
...