DISABLE TRIGGER (Transact-SQL)DISABLE TRIGGER (Transact-SQL)

DIESES THEMA GILT FÜR:jaSQL Server (ab 2008)jaAzure SQL-DatenbankneinAzure SQL Data Warehouse neinParallel Data Warehouse THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Deaktiviert einen Trigger.Disables a trigger.

Themenlinksymbol Transact-SQL Syntax Conventions (Transact-SQL-Syntaxkonventionen)Topic link icon Transact-SQL Syntax Conventions

SyntaxSyntax

DISABLE TRIGGER { [ schema_name . ] trigger_name [ ,...n ] | ALL }  
ON { object_name | DATABASE | ALL SERVER } [ ; ]  

ArgumenteArguments

schema_nameschema_name
Der Name des Schemas, zu dem der Trigger gehört.Is the name of the schema to which the trigger belongs. schema_name kann für DDL- oder LOGON-Trigger nicht angegeben werden.schema_name cannot be specified for DDL or logon triggers.

trigger_nametrigger_name
Der Name des Triggers, der deaktiviert werden soll.Is the name of the trigger to be disabled.

ALLALL
Gibt an, dass alle im Bereich der ON-Klausel definierten Trigger deaktiviert sind.Indicates that all triggers defined at the scope of the ON clause are disabled.

Achtung

SQL ServerSQL Server erstellt Trigger in Datenbanken, die für die Mergereplikation veröffentlicht werden. creates triggers in databases that are published for merge replication. Die Angabe von ALL in veröffentlichten Datenbanken deaktiviert diese Trigger, wodurch die Replikation unterbrochen wird.Specifying ALL in published databases disables these triggers, which disrupts replication. Überprüfen Sie, dass die aktuelle Datenbank nicht für die Mergereplikation veröffentlicht ist, bevor Sie ALL angeben.Verify that the current database is not published for merge replication before specifying ALL.

object_nameobject_name
Der Name der Tabelle oder Sicht, in der der DML-Trigger trigger_name zur Ausführung erstellt wurde.Is the name of the table or view on which the DML trigger trigger_name was created to execute.

DATABASEDATABASE
Für einen DDL-Trigger wird dadurch angegeben, dass trigger_name zur Ausführung mit dem Datenbankbereich erstellt oder geändert wurde.For a DDL trigger, indicates that trigger_name was created or modified to execute with database scope.

ALL SERVERALL SERVER
Gilt für: SQL Server 2008SQL Server 2008 bis SQL Server 2017SQL Server 2017.Applies to: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017.

Für einen DDL-Trigger wird hiermit angegeben, dass trigger_name zur Ausführung mit dem Serverbereich erstellt oder geändert wurde.For a DDL trigger, indicates that trigger_name was created or modified to execute with server scope. ALL SERVER gilt auch für LOGON-Trigger.ALL SERVER also applies to logon triggers.

Hinweis

Diese Option ist in einer enthaltenen Datenbank nicht verfügbar.This option is not available in a contained database.

RemarksRemarks

Trigger werden beim Erstellen standardmäßig aktiviert.Triggers are enabled by default when they are created. Durch das Deaktivieren wird ein Trigger nicht gelöscht.Disabling a trigger does not drop it. Der Trigger ist weiterhin als Objekt in der aktuellen Datenbank vorhanden.The trigger still exists as an object in the current database. Der Trigger wird jedoch bei der Ausführung von Transact-SQLTransact-SQL-Anweisungen nicht ausgelöst, für die er programmiert wurde.However, the trigger does not fire when any Transact-SQLTransact-SQL statements on which it was programmed are executed. Trigger können mithilfe von ENABLE TRIGGER erneut aktiviert werden.Triggers can be re-enabled by using ENABLE TRIGGER. Für Tabellen definierte DML-Trigger können auch mithilfe von ALTER TABLE deaktiviert oder aktiviert werden.DML triggers defined on tables can be also be disabled or enabled by using ALTER TABLE.

Das Ändern des Triggers durch Verwendung der ALTER TRIGGER-Anweisung aktiviert den Trigger.Changing the trigger by using the ALTER TRIGGER statement enables the trigger.

BerechtigungenPermissions

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.To disable a DML trigger, at a minimum, a user must have ALTER permission on the table or view on which the trigger was created.

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.To disable a DDL trigger with server scope (ON ALL SERVER) or a logon trigger, a user must have CONTROL SERVER permission on the 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.To disable a DDL trigger with database scope (ON DATABASE), at a minimum, a user must have ALTER ANY DATABASE DDL TRIGGER permission in the current database.

BeispieleExamples

Die folgenden Beispiele werden in der AdventureWorks2012-Datenbank beschrieben.The following examples are described in the AdventureWorks2012 database.

A.A. Deaktivieren eines DML-Triggers für eine TabelleDisabling a DML trigger on a table

Im folgenden Beispiel wird der Trigger uAddress deaktiviert, der für die Address-Tabelle erstellt wurde.The following example disables trigger uAddress that was created on table Address.

DISABLE TRIGGER Person.uAddress ON Person.Address;  
GO  

B.B. Deaktivieren eines DDL-TriggersDisabling a DDL trigger

Im folgenden Beispiel wird der DDL-Trigger safety mit Datenbankbereich erstellt und anschließend deaktiviert.The following example creates a DDL trigger safety with database scope, and then disables it.

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.C. Deaktivieren aller Trigger, die mit dem gleichen Bereich definiert wurdenDisabling all triggers that were defined with the same scope

Im folgenden Beispiel werden alle DDL-Trigger deaktiviert, die im Serverbereich erstellt wurden.The following example disables all DDL triggers that were created at the server scope.

DISABLE Trigger ALL ON ALL SERVER;  
GO  

Weitere Informationen finden Sie unterSee Also

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