DISABLE TRIGGER (Transact-.SQL)

  • 05/10/2017
  • 2 Minuten zu lesen
    • W
    • c
    • r
    • i
    • M
    • +7

Gilt für: SQL Server (alle unterstützten Versionen) Azure SQL Database

Deaktiviert einen Trigger.

Transact-SQL-Syntaxkonventionen

Syntax

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

Hinweis

Zur Anzeige der Transact-SQL-Syntax für SQL Server 2014 und früher siehe Dokumentation zu früheren Versionen.

Argumente

schema_name
Ist der Name des Schemas, zu dem der Trigger gehört. schema_name kann nicht für DDL- oder Anmeldetrigger angegeben werden.

trigger_name
Ist der Name des Triggers, der deaktiviert werden soll.

ALL
Gibt an, dass alle Trigger, die im Bereich der ON-Klausel definiert sind, deaktiviert werden.

Achtung

SQL Server erstellt Trigger in Datenbanken, die für die Merge-Replikation veröffentlicht werden. Durch die Angabe von ALL in veröffentlichten Datenbanken werden diese Trigger deaktiviert, was die Replikation unterbricht. Stellen Sie sicher, dass die aktuelle Datenbank nicht für die Merge-Replikation veröffentlicht ist, bevor Sie ALL angeben.

Objektname
Ist der Name der Tabelle oder Ansicht, für die der DML-Trigger trigger_name erstellt wurde, um ausgeführt zu werden.

DATABASE
Für einen DDL-Trigger gibt an, dass trigger_name erstellt oder geändert wurde, um mit dem Datenbankbereich ausgeführt zu werden.

ALL SERVER
Gilt für: SQL Server 2008 und höher.

Für einen DDL-Trigger, zeigt an, dass trigger_name erstellt oder geändert wurde, um mit dem Serverbereich ausgeführt zu werden. ALL SERVER gilt auch für Anmeldetrigger.

Hinweis

Diese Option ist in einer enthaltenen Datenbank nicht verfügbar.

Bemerkungen

Trigger sind standardmäßig aktiviert, wenn sie erstellt werden. Wenn Sie einen Trigger deaktivieren, wird er nicht gelöscht. Der Trigger existiert weiterhin als Objekt in der aktuellen Datenbank. Der Trigger wird jedoch nicht ausgelöst, wenn die Transact-SQL-Anweisungen, für die er programmiert wurde, ausgeführt werden. Trigger können durch die Verwendung von ENABLE TRIGGER wieder aktiviert werden. DML-Trigger, die auf Tabellen definiert sind, können auch mit ALTER TABLE deaktiviert oder aktiviert werden.

Durch Ändern des Triggers mit der ALTER TRIGGER-Anweisung wird der Trigger aktiviert.

Berechtigungen

Um einen DML-Trigger zu deaktivieren, muss ein Benutzer mindestens die ALTER-Berechtigung für die Tabelle oder den View haben, für die/den der Trigger erstellt wurde.

Um einen DDL-Trigger mit Serverbereich (ON ALL SERVER) oder einen Anmeldetrigger zu deaktivieren, muss ein Benutzer die CONTROL SERVER-Berechtigung für den Server haben. Um einen DDL-Trigger mit Datenbankbereich (ON DATABASE) zu deaktivieren, muss ein Benutzer mindestens die Berechtigung ALTER ANY DATABASE DDL TRIGGER in der aktuellen Datenbank haben.

Beispiele

Die folgenden Beispiele werden in der AdventureWorks2012-Datenbank beschrieben.

A. Deaktivieren eines DML-Triggers für eine Tabelle

Das folgende Beispiel deaktiviert den Trigger uAddress, der für Tabelle Person erstellt wurde.

DISABLE TRIGGER Person.uAddress ON Person.Address; GO 

B. Deaktivieren eines DDL-Triggers

Das folgende Beispiel erstellt einen DDL-Trigger safety mit Datenbankbereich und deaktiviert ihn dann.

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. Deaktivieren aller Trigger, die mit demselben Bereich definiert wurden

Das folgende Beispiel deaktiviert alle DDL-Trigger, die mit dem Serverbereich erstellt wurden.

DISABLE Trigger ALL ON ALL SERVER; GO 

Siehe auch

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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.