- 05/10/2017
- 2 minutter at læse
-
- W
- c
- r
- i
- M
-
+7
Gælder for: SQL Server (alle understøttede versioner) Azure SQL Database
Desaktiverer en udløser.
Transact-SQL-syntaks-konventioner
Syntaks
DISABLE TRIGGER { trigger_name | ALL } ON { object_name | DATABASE | ALL SERVER }
Note
For at få vist Transact-SQL-syntaks for SQL Server 2014 og tidligere, se Dokumentationen for tidligere versioner.
Argumenter
schema_name
Er navnet på det skema, som udløseren hører til. schema_name kan ikke angives for DDL- eller logon-udløsere.
trigger_name
Er navnet på den udløser, der skal deaktiveres.
ALL
Angiver, at alle udløsere, der er defineret i ON-klausulens anvendelsesområde, deaktiveres.
Advarsel
SQL Server opretter udløsere i databaser, der er offentliggjort til sammenlægningsreplikation. Hvis du angiver ALL i offentliggjorte databaser, deaktiveres disse udløsere, hvilket forstyrrer replikationen. Kontroller, at den aktuelle database ikke er offentliggjort til sammenlægningsreplikation, før du angiver ALL.
object_name
Er navnet på den tabel eller visning, som DML-udløseren trigger_name blev oprettet til at udføre.
DATABASE
Angiver for en DDL-udløser, at trigger_name blev oprettet eller ændret til at blive udført med databaseomfang.
ALL SERVER
Gælder for: SQL Server 2008 og nyere versioner.
Angiver for en DDL-udløser, at trigger_name blev oprettet eller ændret til at blive eksekveret med serverområdet. ALL SERVER gælder også for logon-triggere.
Bemærkning
Denne indstilling er ikke tilgængelig i en indeholdt database.
Bemærkninger
Triggere er som standard aktiveret, når de oprettes. Hvis du deaktiverer en udløser, slettes den ikke. Triggeren eksisterer stadig som et objekt i den aktuelle database. Triggeren udløses dog ikke, når Transact-SQL-udsagn, som den var programmeret på, udføres. Triggere kan aktiveres igen ved at bruge ENABLE TRIGGER. DML-udløsere, der er defineret på tabeller, kan også deaktiveres eller aktiveres ved hjælp af ALTER TABLE.
Ændring af udløseren ved hjælp af ALTER TRIGGER-anvisningen aktiverer udløseren.
Permissioner
For at deaktivere en DML-udløser skal en bruger som minimum have ALTER-tilladelse til den tabel eller visning, som udløseren blev oprettet i.
For at deaktivere en DDL-udløser med serverområde (ON ALL SERVER) eller en logon-udløser skal en bruger have CONTROL SERVER-tilladelse på serveren. For at deaktivere en DDL-udløser med databaseområde (ON DATABASE) skal en bruger som minimum have tilladelse ALTER ANY DATABASE DDL TRIGGER i den aktuelle database.
Eksempler
De følgende eksempler er beskrevet i AdventureWorks2012-databasen.
A. Deaktivering af en DML-udløser på en tabel
Det følgende eksempel deaktiverer udløser uAddress
, der blev oprettet på tabel Person
.
DISABLE TRIGGER Person.uAddress ON Person.Address; GO
B. Deaktivering af en DDL-udløser
Det følgende eksempel opretter en DDL-udløser safety
med databaseområde og deaktiverer den derefter.
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. Deaktivering af alle triggere, der blev defineret med samme omfang
Det følgende eksempel deaktiverer alle DDL-triggere, der blev oprettet på serverområdet.
DISABLE Trigger ALL ON ALL SERVER; GO
See Also
ENABLE TRIGGER (Transact-SQL)
ALTER TRIGGER (Transact-SQL)
CREATE TRIGGER (Transact-SQL)
DROP TRIGGER (Transact-SQL)
sys.triggers (Transact-SQL)