Freigeben über


ENABLE TRIGGER (Transact-SQL)

Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance

Aktiviert einen DML-, DDL- oder LOGON-Trigger.

Transact-SQL-Syntaxkonventionen

Syntax

ENABLE 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 aktiviert werden soll.

ALL
Gibt an, dass alle im Bereich der ON-Klausel definierten Trigger aktiviert sind.

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

Durch das Aktivieren eines Triggers wird dieser nicht neu erstellt. Ein deaktivierter Trigger ist weiterhin als Objekt in der aktuellen Datenbank vorhanden, wird jedoch nicht ausgelöst. Durch das Aktivieren eines Triggers wird dieser ausgelöst, wenn eine beliebige Transact-SQL-Anweisung ausgeführt wird, für die er ursprünglich programmiert wurde. Trigger werden mit DISABLE TRIGGER deaktiviert. Für Tabellen definierte DML-Trigger können auch mithilfe von ALTER TABLE deaktiviert oder aktiviert werden.

Berechtigungen

Zum Aktivieren eines DML-Triggers benötigt der Benutzer mindestens die ALTER-Berechtigung für die Tabelle oder Sicht, in der der Trigger erstellt wurde.

Zum Aktivieren eines DDL-Triggers mit Serverbereich (ON ALL SERVER) oder eines LOGON-Triggers benötigt der Benutzer die CONTROL SERVER-Berechtigung auf dem Server. Zum Aktivieren eines DDL-Triggers mit Datenbankbereich (ON DATABASE) benötigt der Benutzer mindestens die ALTER ANY DATABASE DDL TRIGGER-Berechtigung in der aktuellen Datenbank.

Beispiele

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

Im folgenden Beispiel wird der uAddress-Trigger, der für die Address-Tabelle in der AdventureWorks-Datenbank erstellt wurde, deaktiviert und anschließend aktiviert.

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

B. Aktivieren eines DDL-Triggers

Im folgenden Beispiel wird der DDL-Trigger safety mit einem Datenbankbereich erstellt und anschließend deaktiviert bzw. aktiviert.

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. Aktivieren aller Trigger, die mit dem gleichen Bereich definiert wurden

Im folgenden Beispiel werden alle DDL-Trigger aktiviert, die im Serverbereich erstellt wurden.

Gilt für: SQL Server 2008 (10.0.x) und höher

ENABLE Trigger ALL ON ALL SERVER;  
GO  

Weitere Informationen

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