Udostępnij za pomocą


WYŁĄCZ TRIGGER (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBaza danych SQL w usłudze Microsoft Fabric

Wyłącza wyzwalacz.

Transact-SQL konwencje składni

Składnia

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

Arguments

schema_name
To nazwa schematu, do którego należy wyzwalacz. schema_name nie można określić dla wyzwalaczy DDL ani logowania.

trigger_name
To nazwa wyzwalacza, który ma zostać wyłączony.

ALL
Wskazuje, że wszystkie wyzwalacze zdefiniowane w zakresie klauzuli ON są wyłączone.

Ostrzeżenie

SQL Server tworzy wyzwalacze w bazach danych publikowanych do replikacji scalania. Określenie ALL w opublikowanych bazach danych wyłącza te wyzwalacze, co zakłóca replikację. Sprawdź, czy aktualna baza danych nie została opublikowana do replikacji scalania, zanim określisz ALL.

object_name
To nazwa tabeli lub widoku, na którym wyzwalacz DML trigger_name został utworzony, aby go wykonać.

DATABASE
Dla wyzwalacza DDL oznacza, że trigger_name został utworzony lub zmodyfikowany, aby wykonać się w zakresie bazy danych.

WSZYSTKIE SERWERY
Dotyczy: SQL Server 2008 (10.0.x) i nowszych.

Dla wyzwalacza DDL oznacza, że trigger_name został utworzony lub zmodyfikowany do wykonania w zakresie serwera. ALL SERVER dotyczy także wyzwalaczy logowania.

Uwaga / Notatka

Ta opcja nie jest dostępna w zamkniętej bazie danych.

Uwagi

Wyzwalacze są domyślnie włączane podczas ich tworzenia. Wyłączenie wyzwalacza nie powoduje jego usunięcia. Wyzwalacz nadal istnieje jako obiekt w bieżącej bazie danych. Jednak wyzwalacz nie uruchamia się, gdy wykonywane są dowolne Transact-SQL instrukcje, na których został zaprogramowany. Wyzwalacze można ponownie włączyć, używając ENABLE TRIGGER. Wyzwalacze DML zdefiniowane w tabelach można również wyłączyć lub wyłączyć za pomocą ALTER TABLE.

Zmiana wyzwalacza za pomocą instrukcji ALTER TRIGGER umożliwia uruchomienie wyzwalacza.

Permissions

Aby wyłączyć wyzwalacz DML, użytkownik musi mieć co najmniej uprawnienia ALTER do tabeli lub widoku, na którym wyzwalacz został utworzony.

Aby wyłączyć wyzwalacz DDL o zakresie serwera (NA WSZYSTKICH SERWERACH) lub wyzwalaczu logowania, użytkownik musi mieć uprawnienia CONTROL SERVER na serwerze. Aby wyłączyć wyzwalacz DDL o zakresie bazy danych (ON DATABASE), użytkownik musi przynajmniej mieć uprawnienia ALTER ANY DATABASE DDL TRIGGER w aktualnej bazie danych.

Przykłady

Przykłady kodu w tym artykule korzystają z przykładowej bazy danych AdventureWorks2025 lub AdventureWorksDW2025, którą można pobrać ze strony głównej Przykładów programu Microsoft SQL Server i projektów społeczności.

A. Wyłączanie wyzwalacza DML na stole

Poniższy przykład wyłącza wyzwalacz uAddress , który został utworzony w tabeli Person.

DISABLE TRIGGER Person.uAddress ON Person.Address;  
GO  

B. Wyłączanie wyzwalacza DDL

Poniższy przykład tworzy wyzwalacz safety DDL o zakresie 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łączenie wszystkich wyzwalaczy, które zostały zdefiniowane o tym samym zakresie

Poniższy przykład wyłącza wszystkie wyzwalacze DDL utworzone w skali serwera.

DISABLE Trigger ALL ON ALL SERVER;  
GO  

Zobacz też

WŁĄCZ WYZWALACZ (Transact-SQL)
ALTER TRIGGER (Transact-SQL)
UTWÓRZ TRIGGER (Transact-SQL)
WYZWALACZ DROP (Transact-SQL)
sys.triggers (Transact-SQL)