- 05/10/2017
- 2 minuter att läsa
-
- W
- c
- r
- i
- M
-
+7
Gäller: SQL Server (alla versioner som stöds) Azure SQL Database
Inaktiverar en utlösare.
Transact-SQL syntaxkonventioner
Syntax
DISABLE TRIGGER { trigger_name | ALL } ON { object_name | DATABASE | ALL SERVER }
Anmärkning
Om du vill visa Transact-SQL-syntaxen för SQL Server 2014 och tidigare, se dokumentationen för tidigare versioner.
Argument
schema_name
Är namnet på det schema som utlösaren tillhör. schema_name kan inte anges för DDL- eller inloggningsutlösare.
trigger_name
är namnet på den utlösare som ska inaktiveras.
ALL
Indikerar att alla utlösare som definierats inom ON-klausulens räckvidd inaktiveras.
Försiktighet
SQL Server skapar utlösare i databaser som publiceras för sammanslagningsreplikering. Om du anger ALL i publicerade databaser inaktiveras dessa utlösare, vilket stör replikeringen. Kontrollera att den aktuella databasen inte är publicerad för sammanslagningsreplikering innan du anger ALL.
object_name
Är namnet på den tabell eller vy som DML-utlösaren trigger_name skapades för att exekveras.
DATABASE
För en DDL-utlösare anger att trigger_name skapades eller ändrades för att exekveras med databasomfång.
ALL SERVER
Gäller för: För en DDL-utlösare anger att trigger_name skapades eller ändrades för att exekveras med serverområdet. ALL SERVER gäller även för inloggningsutlösare.
Anmärkning
Detta alternativ är inte tillgängligt i en innesluten databas.
Märkningar
Upplösare aktiveras som standard när de skapas. Om du inaktiverar en utlösare släpper du den inte. Utlösaren finns fortfarande kvar som ett objekt i den aktuella databasen. Utlösaren utlöses dock inte när Transact-SQL-utsagor som den var programmerad för exekveras. Utlösare kan återaktiveras med hjälp av ENABLE TRIGGER. DML-utlösare som definieras på tabeller kan också inaktiveras eller aktiveras med hjälp av ALTER TABLE.
Ändring av utlösaren med hjälp av ALTER TRIGGER-anvisningen aktiverar utlösaren.
Handlingar
För att inaktivera en DML-utlösare måste en användare åtminstone ha ALTER-behörighet för den tabell eller vy som utlösaren skapades för.
För att inaktivera en DDL-utlösare med serveromfång (ON ALL SERVER) eller en inloggningsutlösare måste en användare ha CONTROL SERVER-behörighet för servern. För att inaktivera en DDL-utlösare med databasomfattning (ON DATABASE) måste en användare åtminstone ha behörigheten ALTER ANY DATABASE DDL TRIGGER i den aktuella databasen.
Exempel
Följande exempel beskrivs i databasen AdventureWorks2012.
A. Inaktivera en DML-trigger på en tabell
Följande exempel inaktiverar trigger 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 databasomfång 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. Inaktivera alla utlösare som definierades med samma omfattning
Följande exempel inaktiverar alla DDL-utlösare som skapades med serveromfång.
DISABLE Trigger ALL ON ALL SERVER; GO
Se även
ENABLE TRIGGER (Transact-SQL)
ALTER TRIGGER (Transact-SQL)
CREATE TRIGGER (Transact-SQL)
DROP TRIGGER (Transact-SQL)
sys.triggers (Transact-SQL)