web-dev-qa-db-fra.com

SQL Server désactivant tous les déclencheurs - Impossible de trouver l'objet «XXXX» car il n'existe pas ou vous ne disposez pas des autorisations

J'essaye d'exécuter cette commande dans SQL Server:

disable trigger all on MYDB

Cela échoue pour moi. Le compte auquel je suis connecté a accès à MYDB et je lui donne à peu près toutes les autorisations disponibles (c'est une base de données locale et mon compte uniquement, donc c'est OK). Je ne comprends pas pourquoi il me dit qu'il ne trouve pas MYDB pour cela? J'ai déjà fait ça. Remarquez également: je peux sélectionner dans la base de données, mettre à jour et exécuter une déclaration d'octroi (telle que l'octroi de l'exécution d'un proc). Je peux également désactiver les déclencheurs manuellement ...

Alors pourquoi cela échoue-t-il? J'ai pu le faire avant ...

Merci.

25
Brian Mains
sp_msforeachtable 'ALTER TABLE ? DISABLE TRIGGER all'

Pour activer tous les déclencheurs, vous pouvez utiliser l'instruction suivante

sp_msforeachtable 'ALTER TABLE ? ENABLE TRIGGER all'
78
Derek Kromm
use MYDB;
disable trigger all on DATABASE;
0
Badiboy

Je ne sais pas pourquoi Yuck a supprimé leur réponse. De DISABLE TRIGGER :

object_name Est le nom de la table ou de la vue sur laquelle le déclencheur DML trigger_name a été créé pour s'exécuter.

Autrement dit, vous ne pouvez pas fournir de nom de base de données à cette instruction. Alors que le MYDB base de données existe, il y a n'est pas un objet qu'il contient appelé MYDB.

0