Udostępnij za pośrednictwem


Designing DDL Triggers

Przed rozpoczęciem projektowania wyzwalacz DLL, Oto wymagane:

  • Należy zrozumieć zakres wyzwalacz DLL.

  • Należy określić, które Transact-SQL Instrukcja lub grupy instrukcji uruchomieniu wyzwalacza.

Security noteSecurity Note:

Złośliwy kod wewnątrz Wyzwalacze mogą być uruchamiane escalated uprawnień.Aby uzyskać więcej informacji na temat zmniejszyć zagrożenie zobacz Managing Trigger Security.

Uwaga

Wyzwalacze DDL nie ognia w reakcji na zdarzenia, które wpływają na tabelach tymczasowych lokalnej lub globalnej i procedur przechowywanych.

Opis wyzwalacza zakres

Wyzwalacze DDL może wystrzelić w odpowiedzi na Transact-SQL Zdarzenie przetwarzane w bieżącej bazie danych lub na bieżącym serwerze. Zakres wyzwalacz zależy od tego zdarzenie.Na przykład wyzwalacz DLL utworzone uruchomienie w odpowiedzi na zdarzenie CREATE_TABLE można zrobić za każdym razem, gdy wystąpi zdarzenie CREATE_TABLE w bazie danych lub w wystąpieniu serwera.wyzwalacz DLL utworzone uruchomienie w odpowiedzi na zdarzenie CREATE_LOGIN można wykonać, tylko gdy zdarzenie CREATE_LOGIN wystąpi na serwerze.

W poniższym przykładzie wyzwalacz DLL safety spowoduje uruchomienie za każdym razem, gdy DROP_TABLE lub ALTER_TABLE zdarzenie występuje w bazie danych.

CREATE TRIGGER safety 
ON DATABASE 
FOR DROP_TABLE, ALTER_TABLE 
AS 
   PRINT 'You must disable Trigger "safety" to drop or alter tables!' 
   ROLLBACK
;

W poniższym przykładzie wyzwalacz DLL drukuje komunikat ewentualne CREATE_DATABASE Zdarzenie zachodzi na bieżące wystąpienie serwera. W przykładzie użyto EVENTDATA Funkcja pobrać odpowiedni tekst Transact-SQL Instrukcja. Aby uzyskać więcej informacji na temat używania EVENTDATA z wyzwalaczami DDL zobacz Using the EVENTDATA Function.

List, które są mapowane Transact-SQLinstrukcje do zakresów, które mogą być określone dla nich są dostępne za pośrednictwem łączy dostępnych w sekcji "Wybieranie, a określony DDL instrukcja do Fire a DDL wyzwalacz," w dalszej części tego tematu.

Bazy danych o zakresie DDL wyzwalaczy są przechowywane jako obiekty w bazie danych, w którym zostały utworzone.Można tworzyć wyzwalacze DDL wzorzec bazy danych i zachowują się podobnie jak utworzone w bazach danych zaprojektowane przez użytkownika.Informacje o DDL wyzwalaczy można uzyskać za pomocą kwerend wysyłanych do sys.Triggers Służy do wyświetlania katalogu. Można wysyłać kwerendy sys.Triggers w obrębie kontekstu bazy danych, w którym wyzwalacze są tworzone albo przez określenie nazwy bazy danych jako identyfikator, takie jak Master.sys.Triggers.

Serwer o zakresie DDL wyzwalaczy są przechowywane jako obiekty w wzorzec bazy danych.Jednak z informacjami na temat serwera o zakresie DDL wyzwalaczy można uzyskać za pomocą kwerend wysyłanych do sys.server_triggers wykazu widoku w dowolnym kontekście bazy danych.

Aby uzyskać więcej informacji dotyczących sposobu pobierania metadane dla kodu DDL wyzwalaczy zobacz Getting Information About DDL Triggers.

Określanie instrukcja języka Transact-SQL lub grupę z deklaracji

Uruchomienie w odpowiedzi do jednego lub kilku szczególnych instrukcje DDL lub wstępnie zdefiniowanej grupy instrukcji DDL można tworzyć wyzwalacze DDL.

Wybierając określony instrukcja DDL na pożarowego wyzwalacz DLL

Wyzwalacze DDL mogą być projektowane w celu ognia po szczególności jeden lub więcej Transact-SQL instrukcje są uruchamiane. W poprzednim przykładzie wyzwolić safety uruchamiany po dowolnej DROP_TABLE lub ALTER_TABLE zdarzenie. Lista Transact-SQL instrukcje, które mogą być określane uruchomienie wyzwalacz DLL i zakres, w którym wyzwalacz może pożaru, zobacz DDL Events.

Zaznaczanie grupy predefiniowane instrukcje DDL na pożarowego wyzwalacz DLL

wyzwalacz DLL może wystrzelić po wykonaniu wszelkich Transact-SQL zdarzenie, które należy do wstępnie zdefiniowanych grupowanie podobnych zdarzeń. Na przykład wyzwalacz DLL uruchomienie po uruchomieniu dowolnej instrukcja CREATE tabela, ALTER tabela lub DROP tabela, należy w instrukcja CREATE TRIGGER można określić DDL_TABLE_EVENTS FOR.Po uruchomieniu CREATE TRIGGER zdarzenie, które są objęte grupą zdarzenie są dodawane do sys.trigger_events Służy do wyświetlania katalogu.

Uwaga

W SQL Server 2005, jeśli wyzwalacz jest tworzony na grupę zdarzeń sys.trigger_events brakuje informacji o grupie zdarzenie, sys.trigger_events zawiera informacje tylko o pojedynczych zdarzeń objętych tą grupą.W SQL Server 2008, sys.trigger_events będzie się powtarzał metadane o grupie zdarzenie, na którym tworzony jest wyzwalacze, a także o poszczególnych zdarzeniach, które obejmuje grupy zdarzenia.Zmienia więc zdarzenie, które są objęte zdarzenie grup w SQL Server 2008 nie mają zastosowania do wyzwalaczy DDL, które zostały utworzone w tych grup zdarzeń, w SQL Server 2005.

Listę wstępnie zdefiniowanych grup instrukcji DDL, które są dostępne dla wyzwalaczy DDL instrukcje określonego zdarzenie grupy okładki i zakresy, w którym mogą być zaplanowane tych grup zdarzeń, zobacz DDL Event Groups.