Hier ist eine Möglichkeit:
SELECT
sysobjects.name AS trigger_name
,USER_NAME(sysobjects.uid) AS trigger_owner
,s.name AS table_schema
,OBJECT_NAME(parent_obj) AS table_name
,OBJECTPROPERTY( id, 'ExecIsUpdateTrigger') AS isupdate
,OBJECTPROPERTY( id, 'ExecIsDeleteTrigger') AS isdelete
,OBJECTPROPERTY( id, 'ExecIsInsertTrigger') AS isinsert
,OBJECTPROPERTY( id, 'ExecIsAfterTrigger') AS isafter
,OBJECTPROPERTY( id, 'ExecIsInsteadOfTrigger') AS isinsteadof
,OBJECTPROPERTY(id, 'ExecIsTriggerDisabled') AS [disabled]
FROM sysobjects
INNER JOIN sysusers
ON sysobjects.uid = sysusers.uid
INNER JOIN sys.tables t
ON sysobjects.parent_obj = t.object_id
INNER JOIN sys.schemas s
ON t.schema_id = s.schema_id
WHERE sysobjects.type = 'TR'
BEARBEITEN : Auskommentierter Join zu Sysusern zur Abfrage für AdventureWorks2008.
SELECT
sysobjects.name AS trigger_name
,USER_NAME(sysobjects.uid) AS trigger_owner
,s.name AS table_schema
,OBJECT_NAME(parent_obj) AS table_name
,OBJECTPROPERTY( id, 'ExecIsUpdateTrigger') AS isupdate
,OBJECTPROPERTY( id, 'ExecIsDeleteTrigger') AS isdelete
,OBJECTPROPERTY( id, 'ExecIsInsertTrigger') AS isinsert
,OBJECTPROPERTY( id, 'ExecIsAfterTrigger') AS isafter
,OBJECTPROPERTY( id, 'ExecIsInsteadOfTrigger') AS isinsteadof
,OBJECTPROPERTY(id, 'ExecIsTriggerDisabled') AS [disabled]
FROM sysobjects
/*
INNER JOIN sysusers
ON sysobjects.uid = sysusers.uid
*/
INNER JOIN sys.tables t
ON sysobjects.parent_obj = t.object_id
INNER JOIN sys.schemas s
ON t.schema_id = s.schema_id
WHERE sysobjects.type = 'TR'
EDIT 2 : Für SQL 2000
SELECT
o.name AS trigger_name
,'x' AS trigger_owner
/*USER_NAME(o.uid)*/
,s.name AS table_schema
,OBJECT_NAME(o.parent_obj) AS table_name
,OBJECTPROPERTY(o.id, 'ExecIsUpdateTrigger') AS isupdate
,OBJECTPROPERTY(o.id, 'ExecIsDeleteTrigger') AS isdelete
,OBJECTPROPERTY(o.id, 'ExecIsInsertTrigger') AS isinsert
,OBJECTPROPERTY(o.id, 'ExecIsAfterTrigger') AS isafter
,OBJECTPROPERTY(o.id, 'ExecIsInsteadOfTrigger') AS isinsteadof
,OBJECTPROPERTY(o.id, 'ExecIsTriggerDisabled') AS [disabled]
FROM sysobjects AS o
/*
INNER JOIN sysusers
ON sysobjects.uid = sysusers.uid
*/
INNER JOIN sysobjects AS o2
ON o.parent_obj = o2.id
INNER JOIN sysusers AS s
ON o2.uid = s.uid
WHERE o.type = 'TR'
Bitte schön.
Ein paar Dinge hier ...
Ich sehe auch, dass Sie versucht haben, die Schemainformationen der übergeordneten Tabellen abzurufen. Ich glaube, dass Sie dazu auch die sysobjects-Tabelle selbst verknüpfen müssen, damit Sie die Schemainformationen für die übergeordnete Tabelle korrekt abrufen können. Die obige Abfrage führt dies aus. Außerdem wurde die Sysusertabelle in den Ergebnissen nicht benötigt, sodass Join entfernt wurde.
getestet mit SQL 2000, SQL 2005 und SQL 2008 R2
quelle
SELECT Alias = Expression
. Es wurde nicht veraltet. Was veraltet ist, istSELECT 'Alias' = Expression
. Ich habe diese Informationen von Ihrem eigenen Link erhalten! Bitte korrigieren Sie die Fehlinformationen.Ich hatte vor kurzem die gleiche Aufgabe und habe Folgendes für SQL Server 2012 DB verwendet. Verwenden Sie Management Studio und stellen Sie eine Verbindung zu der Datenbank her, die Sie durchsuchen möchten. Führen Sie dann das folgende Skript aus.
quelle
Sie können den Körper der Auslöser auch wie folgt abrufen:
quelle
quelle
Verwenden Sie diese Abfrage:
Es ist einfach und nützlich.
quelle
Und was denkst du darüber: Sehr kurz und ordentlich :)
quelle
das funktioniert für mich
quelle
Dies ist, was ich benutze (normalerweise in etwas eingewickelt, das ich in Model stopfe):
Wie Sie sehen, ist es ein bisschen mehr McGyver, aber ich denke, es lohnt sich:
(Scrollen Sie nach rechts, um die letzte und nützlichste Spalte anzuzeigen.)
quelle
Verwenden Sie diese Abfrage:
quelle
das kann helfen.
quelle
Wenn Sie nach
ALL
Triggern suchen , denken Sie daran, dass MS-SQL sowohl SQL-basierte Trigger (sysobjects.type = 'TR'
) als auch CLR-basierte Trigger (sysobjects.type = 'TA'
) enthält.quelle
Der obige Code ist wie gezeigt falsch:
quelle
Nekromantie.
Nur posten, weil alle Lösungen bisher nicht vollständig sind.
quelle
quelle
quelle
Eine Schwierigkeit besteht darin, dass der Text oder die Beschreibung Zeilenvorschübe enthält. Mein ungeschickter Kludge, um es in eine tabellarischere Form zu bringen, besteht darin
HTML
, derSELECT
Klausel ein Literal hinzuzufügen , alles in den Editor zu kopieren und einzufügen, mit einer HTML-Erweiterung zu speichern, in einem Browser zu öffnen und dann zu kopieren und in eine Tabelle einzufügen. BeispielMöglicherweise müssen Sie immer noch mit Registerkarten herumspielen, um die Beschreibung in ein Feld zu bringen, aber zumindest wird sie in einer Zeile stehen, was ich sehr hilfreich finde.
quelle
C # Cribs: Am Ende hatte ich diesen super generischen Einzeiler. Ich hoffe, dies ist sowohl für das Originalplakat als auch für Personen nützlich, die gerade dieselbe Frage in Google eingegeben haben:
Abfrageeigenschaften:
quelle
quelle