GUIを使用する代わりに、T-SQLクエリを実行してSQL Serverデータベースを管理する場合は、現在のデータベース内のすべてのトリガーを一覧表示するための2つのオプションがあります。
オプション1-sys.triggersカタログビュー
sys.triggers
を使用できます データベース内のすべてのトリガーのリストを取得するためのシステムカタログビュー。
USE Test; SELECT name, OBJECT_NAME(parent_id) AS parent, type, type_desc FROM sys.triggers;
結果:
+-------------------+----------+--------+-------------+ | name | parent | type | type_desc | |-------------------+----------+--------+-------------| | t1_insert_trigger | t1 | TR | SQL_TRIGGER | | t6ins | t6 | TR | SQL_TRIGGER | +-------------------+----------+--------+-------------+
このビューは、タイプがTR(SQL DMLトリガー)またはTA(アセンブリ(CLR)DMLトリガー)のすべてのトリガーを返します。 DMLトリガー名とDDLトリガー名の両方を返します(DMLトリガーのみを返す次のオプションとは異なります)。
オプション2–sys.objectsカタログビュー
sys.objects
を使用することもできます トリガーのリストを取得するためのシステムカタログビュー。
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');
結果:
+----------+-------------------+----------+--------+-------------+ | schema | name | parent | type | type_desc | |----------+-------------------+----------+--------+-------------| | dbo | t1_insert_trigger | t1 | TR | SQL_TRIGGER | | dbo | t6ins | t6 | TR | SQL_TRIGGER | +----------+-------------------+----------+--------+-------------+
sys.objects
に注意してください DMLトリガーのみを一覧表示し、DDLトリガーは一覧表示しません。
これは、sys.objects
が原因です。 スキーマスコープのオブジェクトのみを返します。 DMLトリガー名はスキーマスコープですが、DDLトリガー名は親エンティティによってスコープされます。 DDLトリガーを返す必要がある場合は、sys.triggers
を使用してください 。