Udostępnij za pośrednictwem


Wyłącz WYZWALACZA (Transact-SQL)

Składnia

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

Argumenty

  • schema_name
    Jest to nazwa schematu, do której należy dany wyzwalacz.schema_namenie można określić dla Wyzwalacze DDL lub logowania.

  • trigger_name
    Jest to nazwa wyzwalacza mają zostać wyłączone.

  • ALL
    Wskazuje, że wszystkie wyzwalacze zdefiniowanych na zakres ON klauzula są wyłączone.

    PrzestrogaPrzestroga

    SQL ServerTworzy wyzwalaczy w bazach danych, które są publikowane replikacja scalająca.Określanie w bazach danych opublikowanych wyłącza te wyzwalacze, które disrupts replikacja.Upewnij się, że bieżąca baza danych nie jest publikowana replikacja scalająca przed określeniem wszystkich.

  • object_name
    Jest nazwą tabela lub widoku, w którym wyzwolić DML trigger_name został utworzony w celu wykonać.

  • BAZY DANYCH
    Dla wyzwalacza DDL wskazuje, że trigger_name utworzenia lub modyfikacji wykonać bazę danych zakres.

  • WSZYSTKIE SERWERA
    Dla wyzwalacza DDL wskazuje, że trigger_name utworzenia lub modyfikacji wykonać serwera, zakres.WSZYSTKIE serwera stosuje się również do logowania usługi wyzwalaczy.

Uwagi

Wyzwalacze są domyślnie włączone, podczas ich tworzenia.Wyłączanie wyzwalacz nie upuść ją.Wyzwalacz jest nadal istnieje jako obiekt w bieżącej bazie danych.Jednak wyzwalacz nie ognia, przy Transact-SQL wykonywane są sprawozdania, na których został zaprogramowany.Wyzwalacze mogą ponownie za pomocą Włączyć WYZWALACZA.WyzwalaczeDML , określone w tabelach można również wyłączyć lub włączyć za pomocą ALTER TABLE.

Uprawnienia

Aby wyłączyć wyzwalacza DML , co najmniej użytkownik musi mieć ZMIEŃ uprawnienie dla tabela lub widoku utworzono wyzwalacza.

Aby wyłączyć wyzwalacza DDL z serwera zakres (na wszystkich SERVER) lub logowania, użytkownik musi mieć uprawnienie Kontrola serwera na serwerze.Aby wyłączyć wyzwalacz DDL z bazy danych zakres (na bazie danych), jako minimum, użytkownik musi mieć uprawnienie ALTER DATABASE dowolnego DDL WYZWALACZA w bieżącej bazie danych.

Przykłady

A.Wyłączanie wyzwalacza DML w tabela

Następujący przykład wyłącza wyzwalacza uAddress utworzono w tabela Address.

USE AdventureWorks2008R2;
GO
DISABLE TRIGGER Person.uAddress ON Person.Address;
GO

B.Wyłączanie wyzwalacza DDL

Poniższy przykład tworzy wyzwalacza DDL safety z bazy danych zakres, a następnie wyłącza typie.

IF EXISTS (SELECT * FROM sys.triggers
    WHERE parent_class = 0 AND name = 'safety')
DROP TRIGGER safety ON DATABASE;
GO
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 w tym samym zakres

Następujący przykład wyłącza wszystkie wyzwalacze DDL , które zostały utworzone na serwerze zakres.

USE AdventureWorks2008R2;
GO
DISABLE Trigger ALL ON ALL SERVER;
GO