INAKTIVERA TRIGGERN (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-databas i Microsoft Fabric

Inaktiverar en trigger.

Transact-SQL syntaxkonventioner

Syntax

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

Arguments

schema_name
Är namnet på schemat som triggern tillhör. schema_name kan inte specificeras för DDL- eller inloggningstriggers.

trigger_name
Är namnet på utlösaren som ska inaktiveras.

ALL
Indikerar att alla triggers definierade inom ON-klausulens omfattning är inaktiverade.

Försiktighet

SQL Server skapar triggers i databaser som publiceras för sammanslagningsreplikering. Att specificera ALLT i publicerade databaser inaktiverar dessa triggers, vilket stör replikeringen. Verifiera att den aktuella databasen inte är publicerad för sammanslagningsreplikering innan du specificerar ALL.

object_name
Är namnet på tabellen eller vyn där DML-triggern trigger_name skapades för att köras.

DATABAS
För en DDL-trigger indikerar att trigger_name skapades eller modifierades för att köras med databasomfattning.

ALLA SERVRAR
gäller för: SQL Server 2008 (10.0.x) och senare.

För en DDL-trigger indikerar att trigger_name skapades eller modifierades för att köras med serveromfång. ALL SERVER gäller också för inloggningstriggers.

Anmärkning

Detta alternativ finns inte tillgängligt i en innehållen databas.

Anmärkningar

Triggers är aktiverade som standard när de skapas. Att inaktivera en utlösare tar inte bort den. Utlösaren finns fortfarande som ett objekt i den aktuella databasen. Dock aktiveras inte triggern när några Transact-SQL satser som den programmerades på körs. Triggers kan aktiveras igen genom att använda ENABLE TRIGGER. DML-triggers definierade på tabeller kan också inaktiveras eller aktiveras genom att använda ALTER TABLE.

Att ändra triggern med ALTER TRIGGER-satsen aktiverar triggern.

Permissions

För att inaktivera en DML-trigger måste en användare minst ha ALTER-behörighet på tabellen eller vyn där triggern skapades.

För att inaktivera en DDL-trigger med serveromfång (PÅ ALLA SERVRAR) eller en inloggningsutlösare måste en användare ha CONTROL SERVER-behörighet på servern. För att inaktivera en DDL-trigger med databasomfattning (ON DATABASE) måste en användare minst ha behörighet ÄNDRA VILKEN DATABAS DDL-TRIGGER som helst i den aktuella databasen.

Examples

Kodexemplen i den här artikeln använder AdventureWorks2025- eller AdventureWorksDW2025-exempeldatabasen, som du kan ladda ned från startsidan Microsoft SQL Server Samples och Community Projects.

A. Att inaktivera en DML-trigger på ett bord

Följande exempel inaktiverar triggern uAddress som skapades på tabell Person.

DISABLE TRIGGER Person.uAddress ON Person.Address;  
GO  

B. Inaktivera en DDL-trigger

Följande exempel skapar en DDL-trigger safety med databasomfattning och inaktiverar den sedan.

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. Inaktiverade alla triggers som var definierade med samma omfattning

Följande exempel inaktiverar alla DDL-triggers som skapades i serverns omfattning.

DISABLE Trigger ALL ON ALL SERVER;  
GO  

Se även

AKTIVERA UTLÖSARE (Transact-SQL)
ALTER TRIGGER (Transact-SQL)
SKAPA UTLÖSARE (Transact-SQL)
DROP TRIGGER (Transact-SQL)
sys.triggers (Transact-SQL)