Wenn Sie es vorziehen, Ihre SQL Server-Datenbanken durch Ausführen von T-SQL-Abfragen zu verwalten, anstatt die GUI zu verwenden, finden Sie hier zwei Optionen zum Auflisten aller Trigger in der aktuellen Datenbank.
Option 1 – Die sys.triggers-Katalogansicht
Sie können die sys.triggers
verwenden Systemkatalogansicht, um eine Liste aller Trigger in einer Datenbank zu erhalten.
USE Test; SELECT name, OBJECT_NAME(parent_id) AS parent, type, type_desc FROM sys.triggers;
Ergebnis:
+-------------------+----------+--------+-------------+ | name | parent | type | type_desc | |-------------------+----------+--------+-------------| | t1_insert_trigger | t1 | TR | SQL_TRIGGER | | t6ins | t6 | TR | SQL_TRIGGER | +-------------------+----------+--------+-------------+
Diese Ansicht gibt alle Trigger vom Typ TR (SQL DML-Trigger) oder TA (Assembly (CLR) DML-Trigger) zurück. Sie gibt sowohl DML-Triggernamen als auch DDL-Triggernamen zurück (anders als die nächste Option, die nur DML-Trigger zurückgibt).
Option 2 – Die sys.objects-Katalogansicht
Sie können auch die sys.objects
verwenden Systemkatalogansicht, um eine Liste der Auslöser zu erhalten.
USE Test; SELECT SCHEMA_NAME(schema_id) AS [schema], name, OBJECT_NAME(parent_object_id) AS parent, type, type_desc FROM sys.objects WHERE type IN ('TR', 'TA');
Ergebnis:
+----------+-------------------+----------+--------+-------------+ | schema | name | parent | type | type_desc | |----------+-------------------+----------+--------+-------------| | dbo | t1_insert_trigger | t1 | TR | SQL_TRIGGER | | dbo | t6ins | t6 | TR | SQL_TRIGGER | +----------+-------------------+----------+--------+-------------+
Beachten Sie, dass sys.objects
listet nur DML-Trigger und keine DDL-Trigger auf.
Das liegt daran, dass sys.objects
gibt nur schemabezogene Objekte zurück. DML-Triggernamen sind schemabezogen, aber DDL-Triggernamen werden von der übergeordneten Entität begrenzt. Wenn Sie DDL-Trigger zurückgeben müssen, verwenden Sie sys.triggers
.