Udostępnij za pomocą


WŁĄCZ WYZWALACZ (Transact-SQL)

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

Włącza wyzwalacz DML, DDL lub logowania.

Transact-SQL konwencje składni

Składnia

ENABLE 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 lub logowania.

trigger_name
Czy nazwa wyzwalacza ma być włączona?

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

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

Włączenie wyzwalacza nie odtwarza go. Wyłączony wyzwalacz nadal istnieje jako obiekt w obecnej bazie danych, ale nie uruchamia się. Aby włączyć wyzwalacz, powoduje jego uruchomienie po uruchomieniu dowolnych Transact-SQL instrukcji, na których został pierwotnie zaprogramowany. Wyzwalacze są wyłączane przez WYŁĄCZENIE WYZWALACZ. Wyzwalacze DML zdefiniowane w tabelach można również wyłączyć lub wyłączyć za pomocą ALTER TABLE.

Permissions

Aby włączyć wyzwalacz DML, użytkownik potrzebuje co najmniej pozwolenia ALTER na tabelę lub widok, w którym wyzwalacz został utworzony.

Aby włączyć wyzwalacz DDL o zakresie serwera (NA WSZYSTKICH SERWERACH) lub wyzwalacz logowania, użytkownik potrzebuje uprawnień CONTROL SERVER na serwerze. Aby włączyć wyzwalacz DDL o zakresie bazy danych (ON DATABASE), użytkownik musi przynajmniej ZMIENIĆ DOWOLNE UPRAWNIENIA DO WYZWALANIA DDL bazy danych w aktualnej bazie danych.

Przykłady

A. Włączanie wyzwalacza DML na tabeli

Poniższy przykład wyłącza wyzwalanie uAddress utworzone w tabeli Address w bazie AdventureWorks, a następnie go włącza.

DISABLE TRIGGER Person.uAddress ON Person.Address;  
GO  
ENABLE Trigger Person.uAddress ON Person.Address;  
GO  

B. Włączanie wyzwalacza DDL

Poniższy przykład tworzy wyzwalacz safety DDL o zakresie bazy danych, a następnie go wyłącza i włą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  
ENABLE TRIGGER safety ON DATABASE;  
GO  

C. Włączanie wszystkich triggerów zdefiniowanych o tym samym zakresie

Poniższy przykład umożliwia wszystkie wyzwalacze DDL utworzone w skali serwera.

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

ENABLE Trigger ALL ON ALL SERVER;  
GO  

Zobacz też

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