web-dev-qa-db-fra.com

Impossible de trouver où les déclencheurs sont stockés dans SQL Server 2008

Je veux supprimer et modifier les déclencheurs créés précédemment, mais je ne peux pas les trouver n'importe où dans la base de données. Où ils existent et comment les modifier ou les supprimer

41
Fraz Sundal

Vous pouvez trouver des déclencheurs sous le nœud Table:

enter image description here

91
šljaker

Sous le nœud Tables dans SSMS (SQL Server Management Studio), pour chaque table se trouve un nœud Triggers.

Vous pouvez gérer vos déclencheurs à partir de là.

12
Oded

Voici une meilleure façon:

select a.[name] as trgname, b.[name] as [tbname] 
from sys.triggers a join sys.tables b on a.parent_id = b.object_id

Assurez-vous simplement de l'exécuter sur la base de données où vous pensez que le déclencheur est situé.

8
sqlglenn

Vous pouvez également rechercher les déclencheurs en interrogeant les vues de gestion dans SQL Server Management Studio:

SELECT
    OBJECT_NAME(object_id) 'Table name', *
FROM 
    sys.triggers

Cela vous donne une liste de tous les déclencheurs et sur quelle table ils sont définis pour votre base de données actuelle. Vous pouvez ensuite les désactiver ou les supprimer.

5
marc_s

Pour développer un peu les réponses précédentes, dans toutes les versions récentes de SQL Server, vous pouvez cliquer avec le bouton droit sur un déclencheur et choisir: Script Trigger as… ALTER To… "New Query Editor Window"

Cela ouvrira un script SQL avec les détails du déclencheur, si vous lisez le code, vous remarquerez qu'il inclut la syntaxe ALTER: ALTER TRIGGER [dbo].triggername ...

Cela signifie que vous pouvez modifier le SQL et appuyer sur Exécuter pour modifier le déclencheur - cela écrasera la définition précédente.

Si les déclencheurs ont été créés à l'aide d'outils automatisés, vous pouvez trouver du code en double dans la définition de déclencheur que vous souhaitez supprimer.

Il vaut la peine d'essayer d'exécuter le script avant d'essayer de modifier quoi que ce soit, cela vous dira si la définition du déclencheur est valide. Si une table ou une colonne a été renommée, les choses peuvent se désynchroniser.

De la même manière que pour supprimer/supprimer un déclencheur, sélectionnez complètement: Script Trigger as… DROP To… "New Query Editor Window", puis exécutez-le.

2
ss64