- 05/10/2017
- 2 minuty na przeczytanie
-
- W
- c
- r
- i
- M
-
+7
.
Odnosi się do: SQL Server (wszystkie obsługiwane wersje) Azure SQL Database
Dezaktywuje wyzwalacz.
Konwencje składni języka Transact-SQL
Syntaktyka
DISABLE TRIGGER { trigger_name | ALL } ON { object_name | DATABASE | ALL SERVER }
Uwaga
Aby wyświetlić składnię języka Transact-SQL dla SQL Server 2014 i wcześniejszych, zobacz Dokumentacja poprzednich wersji.
Argumenty
schema_name
Jest to nazwa schematu, do którego należy triger. Schema_name nie może być określony dla trigerów DDL lub logowania.
nazwa_trigera
Jest to nazwa trigera, który ma zostać wyłączony.
ALL
Wskazuje, że wszystkie trigery zdefiniowane w zakresie klauzuli ON są wyłączone.
Uwaga
SerwerSQL tworzy trigery w bazach danych, które są publikowane dla replikacji łączonej. Określenie ALL w opublikowanych bazach danych wyłącza te trigery, co zakłóca replikację. Sprawdź, czy aktualna baza danych nie jest publikowana dla replikacji łączonej przed określeniem WSZYSTKIE.
object_name
Jest nazwą tabeli lub widoku, na którym został utworzony triger DML trigger_name.
DATABASE
Dla trigerów DDL, wskazuje, że triger_name został utworzony lub zmodyfikowany do wykonania w zakresie bazy danych.
ALL SERVER
Dotyczy: SQL Server 2008 i nowszych.
Dla wyzwalacza DDL, wskazuje, że triger_name został utworzony lub zmodyfikowany do wykonywania w zakresie serwera. ALL SERVER odnosi się także do trigerów logowania.
Uwaga
Opcja nie jest dostępna w zamkniętej bazie danych.
Uwagi
Trigery są domyślnie włączone podczas tworzenia. Wyłączenie trigera nie powoduje jego usunięcia. Triger nadal istnieje jako obiekt w aktualnej bazie danych. Jednak triger nie jest wywoływany podczas wykonywania poleceń Transact-SQL, do których został przypisany. Triger może zostać ponownie włączony poprzez polecenie ENABLE TRIGGER. Wyzwalacze DML zdefiniowane na tabelach mogą być również wyłączone lub włączone za pomocą polecenia ALTER TABLE.
Zmiana trigera za pomocą polecenia ALTER TRIGGER włącza triger.
Uprawnienia
Aby wyłączyć triger DML, użytkownik musi posiadać uprawnienia ALTER na tabeli lub widoku, na którym został on utworzony.
Aby wyłączyć triger DDL o zakresie serwera (ON ALL SERVER) lub triger logowania, użytkownik musi posiadać uprawnienia CONTROL SERVER na serwerze. Aby wyłączyć triger DDL o zakresie bazy danych (ON DATABASE), użytkownik musi posiadać uprawnienia ALTER ANY DATABASE DDL TRIGGER w bieżącej bazie danych.
Przykłady
Następujące przykłady są opisane dla bazy danych AdventureWorks2012.
A. Wyłączanie wyzwalacza DML na tabeli
Następujący przykład wyłącza wyzwalacz uAddress
, który został utworzony na tabeli Person
.
DISABLE TRIGGER Person.uAddress ON Person.Address; GO
B. Wyłączanie wyzwalacza DDL
Następujący przykład tworzy wyzwalacz DDL safety
z zakresem bazy danych, a następnie go wyłącza.
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. Wyłączanie wszystkich wyzwalaczy, które zostały zdefiniowane z tym samym zakresem
Następujący przykład wyłącza wszystkie wyzwalacze DDL, które zostały utworzone w zakresie serwera.
DISABLE Trigger ALL ON ALL SERVER; GO
Zobacz także
ENABLE TRIGGER (Transact-SQL)
ALTER TRIGGER (Transact-SQL)
CREATE TRIGGER (Transact-SQL)
DROP TRIGGER (Transact-SQL)
sys.triggers (Transact-SQL)
.