Se preferisci amministrare i tuoi database SQL Server eseguendo query T-SQL, invece di usare la GUI, ecco due opzioni per elencare tutti i trigger nel database corrente.
Opzione 1:la vista del catalogo sys.triggers
Puoi usare sys.triggers
vista del catalogo di sistema per ottenere un elenco di tutti i trigger in un database.
USE Test; SELECT name, OBJECT_NAME(parent_id) AS parent, type, type_desc FROM sys.triggers;
Risultato:
+-------------------+----------+--------+-------------+ | name | parent | type | type_desc | |-------------------+----------+--------+-------------| | t1_insert_trigger | t1 | TR | SQL_TRIGGER | | t6ins | t6 | TR | SQL_TRIGGER | +-------------------+----------+--------+-------------+
Questa visualizzazione restituisce tutti i trigger con un tipo di trigger DML TR (trigger DML SQL) o TA (trigger DML Assembly (CLR). Restituisce sia i nomi dei trigger DML che i nomi dei trigger DDL (a differenza dell'opzione successiva, che restituisce solo i trigger DML).
Opzione 2 – La vista del catalogo sys.objects
Puoi anche usare sys.objects
vista del catalogo di sistema per ottenere un elenco di trigger.
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');
Risultato:
+----------+-------------------+----------+--------+-------------+ | schema | name | parent | type | type_desc | |----------+-------------------+----------+--------+-------------| | dbo | t1_insert_trigger | t1 | TR | SQL_TRIGGER | | dbo | t6ins | t6 | TR | SQL_TRIGGER | +----------+-------------------+----------+--------+-------------+
Nota che sys.objects
elenca solo i trigger DML e non i trigger DDL.
Questo perché sys.objects
restituisce solo oggetti con ambito schema. I nomi dei trigger DML sono nell'ambito dello schema, ma i nomi dei trigger DDL sono nell'ambito dell'entità padre. Se devi restituire i trigger DDL, usa sys.triggers
.