DISABLE TRIGGER (Transact-SQL)

Aktualisiert: 12. Dezember 2006

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

Themenlink (Symbol)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.

    ms189748.Caution(de-de,SQL.90).gifVorsicht:
    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
    Für einen DDL- oder LOGON-Trigger wird hiermit angegeben, dass trigger_name zur Ausführung mit dem Serverbereich erstellt oder geändert wurde.

Hinweise

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, für die er programmiert wurde, nicht ausgelöst. Trigger können mithilfe von ENABLE TRIGGER erneut aktiviert werden. Für Tabellen definierte DML-Trigger können auch mithilfe von ALTER TABLE deaktiviert und aktiviert werden.

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- oder LOGON-Triggers mit Serverbereich (ON ALL SERVER) 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

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

Im folgenden Beispiel wird der Trigger uAddress deaktiviert, der für die Address-Tabelle erstellt wurde.

USE AdventureWorks;
GO
DISABLE TRIGGER Person.uAddress ON Person.Address;
GO

B. Deaktivieren eines DDL-Triggers

Im folgenden Beispiel wird ein safety-DDL-Trigger mit Datenbankbereich erstellt und dann deaktiviert.

IF EXISTS (SELECT * FROM sys.triggers
    WHERE parent_class = 0 AND name = 'safety')
DROP TRIGGER safety ON DATABASE;
GO
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

Im folgenden Beispiel werden alle DDL-und LOGON-Trigger deaktiviert, die im Serverbereich erstellt wurden.

USE AdventureWorks;
GO
DISABLE Trigger ALL ON ALL SERVER;
GO

Siehe auch

Verweis

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

Hilfe und Informationen

Informationsquellen für SQL Server 2005

Änderungsverlauf

Version Verlauf

12. Dezember 2006

Neuer Inhalt:
  • Es wurden im gesamten Thema Informationen zu LOGON-Triggern hinzugefügt, die in SQL Server 2005 Service Pack 2 aufgenommen wurden.