DISABLE TRIGGER (Transact-)SQL)

  • 2017/05/10
  • 2分で読める
    • W
  • C
  • r
  • i
  • M
  • +7

に適用される。 SQL Server (サポートされるすべてのバージョン) Azure SQL Database

トリガーを無効にします。

Transact-SQL Syntax Conventions

Syntax

DISABLE TRIGGER { trigger_name | ALL } ON { object_name | DATABASE | ALL SERVER } 

SQL Server 2014 以前の Transact-SQL 構文は、前のバージョンのドキュメントでご確認ください。

引数

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

trigger_name
Is the name to be disabled.

ALL
Indicate that all triggers defined at the scope of the ON clause is disabled.

Caution

SQL Server はマージ レプリケーション用に公開されているデータベースでトリガを作成します。 パブリッシュされたデータベースでALLを指定すると、これらのトリガが無効になり、レプリケーションが中断されます。

オブジェクト名
DMLトリガーのトリガー名が実行するために作成されたテーブルまたはビューの名前です。

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

ALL SERVER
適用対象です。 SQL Server 2008以降。

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

注意

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

Remarks

トリガーは作成時にデフォルトで有効になっています。 トリガーを無効にすると、トリガーは削除されません。 トリガは、現在のデータベースにオブジェクトとしてまだ存在します。 しかし、トリガがプログラムされたTransact-SQL文が実行されたとき、トリガは起動しません。 トリガは、ENABLE TRIGGERを使用して、再度有効にすることができます。 ALTER TABLEを使用して、テーブル上で定義されたDMLトリガーを無効または有効にすることができます。

権限

DMLトリガを無効にするには、最低でも、ユーザはトリガが作成されたテーブルまたはビューのALTER権限を持っていなければなりません。

サーバ スコープ(ON ALL SERVER)またはログオン トリガのDDLトリガを無効にするには、ユーザはサーバ上でCONTROL SERVER権限を持っている必要があります。 データベース スコープ (ON DATABASE) の DDL トリガーを無効にするには、最低でも、ユーザーは現在のデータベースで ALTER ANY DATABASE DDL TRIGGER 権限を持っていなければなりません。

次の例は、AdventureWorks2012 データベースで説明しています。 テーブル上のDMLトリガーを無効にする

次の例は、テーブルPerson上に作成されたトリガーuAddressを無効にする。

DISABLE 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 

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

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

DISABLE Trigger ALL ON ALL SERVER; GO 

参照

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

コメントを残す

メールアドレスが公開されることはありません。