ENABLE TRIGGER (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

DML トリガー、DDL トリガー、またはログオン トリガーを有効化します。

Transact-SQL 構文表記規則

構文

ENABLE TRIGGER { [ schema_name . ] trigger_name [ ,...n ] | ALL }  
ON { object_name | DATABASE | ALL SERVER } [ ; ]  

Note

SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。

引数

schema_name
トリガーが属するスキーマの名前を指定します。 schema_name は DDL トリガーやログオン トリガーでは指定できません。

trigger_name
有効化するトリガーの名前です。

ALL
ON 句のスコープで定義されたすべてのトリガーを有効化することを示します。

object_name
DML トリガー trigger_name が実行用に作成されたテーブルまたはビューの名前を指定します。

DATABASE
DDL トリガーの場合、trigger_name が、データベース スコープで実行するために作成または変更されたことを示します。

ALL SERVER
適用対象: SQL Server 2008 (10.0.x) 以降。

DDL トリガーの場合、trigger_name が、サーバー スコープで実行するために作成または変更されたことを示します。 ALL SERVER はログオン トリガーにも適用されます。

Note

このオプションは、包含データベースでは使用できません。

解説

トリガーを有効化しても、トリガーが再作成されるわけではありません。 無効化されたトリガーは、引き続き現在のデータベースのオブジェクトとして残りますが、起動されることはありません。 トリガーを有効にするには、もともとプログラミングされた Transact-SQL ステートメントのいずれかが実行されたときに起動するようにします。 トリガーを無効化するには、DISABLE TRIGGER を使います。 テーブルに定義された DML トリガーも、ALTER TABLE を使用して無効または有効にできます。

アクセス許可

DML トリガーを有効化するには、少なくとも、そのトリガーが作成されたテーブルまたはビューに対する ALTER 権限が必要です。

サーバー スコープ (ON ALL SERVER) 付きの DDL トリガーまたはログオン トリガーを有効化するには、サーバーに対する CONTROL SERVER 権限が必要です。 DDL トリガーをデータベース スコープ (ON DATABASE) で有効化するには、少なくとも、現在のデータベースに対する ALTER ANY DATABASE DDL TRIGGER 権限が必要です。

A. テーブル上の DML トリガーを有効化する

次の例では、AdventureWorks データベースのテーブル Address 上に作成されたトリガー uAddress を無効化し、次に有効化します。

DISABLE TRIGGER Person.uAddress ON Person.Address;  
GO  
ENABLE Trigger Person.uAddress ON Person.Address;  
GO  

B. DDL トリガーを有効化する

次の例では、データベース スコープの DDL トリガー safety を作成し、無効にします。

CREATE TRIGGER safety   
ON DATABASE   
FOR DROP_TABLE, ALTER_TABLE   
AS   
   PRINT 'You must disable Trigger "safety" to drop or alter tables!'   
   ROLLBACK;  
GO  
DISABLE TRIGGER safety ON DATABASE;  
GO  
ENABLE TRIGGER safety ON DATABASE;  
GO  

C. 同じスコープで定義されたすべてのトリガーを有効化する

次の例では、サーバー スコープで作成されたすべての DDL トリガーを有効化します。

適用対象: SQL Server 2008 (10.0.x) 以降。

ENABLE Trigger ALL ON ALL SERVER;  
GO  

参照

DISABLE TRIGGER (Transact-SQL)
ALTER TRIGGER (Transact-SQL)
CREATE TRIGGER (Transact-SQL)
DROP TRIGGER (Transact-SQL)
sys.triggers (Transact-SQL)