DISABLE TRIGGER (Transact-SQL)
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance
Deaktiviert einen Trigger.
Transact-SQL-Syntaxkonventionen
Syntax
DISABLE TRIGGER { [ schema_name . ] trigger_name [ ,...n ] | ALL }
ON { object_name | DATABASE | ALL SERVER } [ ; ]
Argumente
schema_name
Der Name des Schemas, zu dem der Trigger gehört. schema_name kann für DDL- oder LOGON-Trigger nicht angegeben werden.
trigger_name
Der Name des Triggers, der deaktiviert werden soll.
ALL
Gibt an, dass alle im Bereich der ON-Klausel definierten Trigger deaktiviert sind.
Achtung
SQL Server erstellt Trigger in Datenbanken, die für die Mergereplikation veröffentlicht werden. Die Angabe von ALL in veröffentlichten Datenbanken deaktiviert diese Trigger, wodurch die Replikation unterbrochen wird. Überprüfen Sie, dass die aktuelle Datenbank nicht für die Mergereplikation veröffentlicht ist, bevor Sie ALL angeben.
object_name
Der Name der Tabelle oder Sicht, in der der DML-Trigger trigger_name zur Ausführung erstellt wurde.
DATABASE
Für einen DDL-Trigger wird dadurch angegeben, dass trigger_name zur Ausführung mit dem Datenbankbereich erstellt oder geändert wurde.
ALL SERVER
Gilt für: SQL Server 2008 (10.0.x) und höher
Für einen DDL-Trigger wird hiermit angegeben, dass trigger_name zur Ausführung mit dem Serverbereich erstellt oder geändert wurde. ALL SERVER gilt auch für LOGON-Trigger.
Hinweis
Diese Option ist in einer enthaltenen Datenbank nicht verfügbar.
Bemerkungen
Trigger werden beim Erstellen standardmäßig aktiviert. Durch das Deaktivieren wird ein Trigger nicht gelöscht. Der Trigger ist weiterhin als Objekt in der aktuellen Datenbank vorhanden. Der Trigger wird jedoch bei der Ausführung von Transact-SQL-Anweisungen nicht ausgelöst, für die er programmiert wurde. Trigger können mithilfe von ENABLE TRIGGER erneut aktiviert werden. Für Tabellen definierte DML-Trigger können auch mithilfe von ALTER TABLE deaktiviert oder aktiviert werden.
Das Ändern des Triggers durch Verwendung der ALTER TRIGGER-Anweisung aktiviert den Trigger.
Berechtigungen
Zum Deaktivieren eines DML-Triggers muss ein Benutzer mindestens die ALTER-Berechtigung für die Tabelle oder Sicht haben, für die der Trigger erstellt wurde.
Zum Deaktivieren eines DDL-Triggers mit Serverbereich (ON ALL SERVER) oder eines LOGON-Triggers benötigt der Benutzer die CONTROL SERVER-Berechtigung auf dem Server. Um einen DDL-Trigger mit Datenbankbereich (ON DATABASE) zu deaktivieren, muss der Benutzer mindestens die ALTER ANY DATABASE DDL TRIGGER-Berechtigung für die aktuelle Datenbank haben.
Beispiele
Die Transact-SQL-Codebeispiele in diesem Artikel verwenden die AdventureWorks2022
- oder AdventureWorksDW2022
-Beispieldatenbank, die Sie von der Homepage Microsoft SQL Server Samples and Community Projects herunterladen können.
A. Deaktivieren eines DML-Triggers für eine Tabelle
Im folgenden Beispiel wird der Trigger uAddress
deaktiviert, der für die Person
-Tabelle erstellt wurde.
DISABLE TRIGGER Person.uAddress ON Person.Address;
GO
B. Deaktivieren eines DDL-Triggers
Im folgenden Beispiel wird der DDL-Trigger safety
mit Datenbankbereich erstellt und anschließend deaktiviert.
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 dem gleichen Bereich definiert wurden
Im folgenden Beispiel werden alle DDL-Trigger deaktiviert, die im Serverbereich erstellt wurden.
DISABLE Trigger ALL ON ALL SERVER;
GO
Weitere Informationen
ENABLE TRIGGER (Transact-SQL)
ALTER TRIGGER (Transact-SQL)
CREATE TRIGGER (Transact-SQL)
DROP TRIGGER (Transact-SQL)
sys.triggers (Transact-SQL)