Logon Trigger Execution Guidelines

W tym temacie omówiono wytyczne dotyczące określania kolejności wypalania wyzwalaczy logowania i zarządzanie transakcji wewnątrz wyzwalacze logowania.

Określenie pierwszej i ostatniej wyzwalacza

Można zdefiniować wiele wyzwalaczy na logowanie zdarzenie.Any one of these triggers can be designated the first or last trigger to be fired on an event by using the sp_settriggerorder system stored procedure.SQL Server does not guarantee the execution order of the remaining triggers.Aby uzyskać więcej informacji zobaczDesigning and Implementing Structured Storage (Database Engine).

Zarządzanie transakcjami

Przed SQL Server uruchomieniu wyzwalacz logowania SQL Server Tworzy transakcja niejawna, która jest niezależna od każdej transakcji użytkownika. Z tego powodu przy pierwszym logowaniu wyzwalać uruchamia wyzwalania, liczba transakcji wynosi 1.Po wszystkich wyzwalaczy logowania zakończenia wykonywania, zatwierdza transakcję.Jak z innymi typami wyzwalacze, usługa SQL Server Zwraca błąd, jeśli wyzwalacz logowania zakończy się wykonywanie transakcji liczbę 0. Instrukcja ROLLBACK TRANSACTION resetuje liczba transakcji na 0, nawet jeśli instrukcja zostało wydane wewnątrz transakcji zagnieżdżonych.przekazywać transakcję może zmniejszyć liczbę transakcji na 0.Dlatego firma Microsoft doradza przed wydaniem instrukcji zatwierdzanie TRANSACTION wewnątrz wyzwalacze logowania.

Podczas korzystania z instrukcja ROLLBACK TRANSACTION wewnątrz wyzwalacze logowania, należy wziąć pod uwagę następujące kwestie:

  • Wszelkie modyfikacje danych wprowadzonych do punktu TRANSAKCJĘ ROLLBACK są przywracane.Modyfikacje te obejmują przez bieżący wyzwalacz i przez poprzednie wyzwalaczy, które wykonywane w odniesieniu do tego samego zdarzenie.Wszystkie pozostałe wyzwalaczy dla określonego zdarzenie nie są wykonywane.

  • Bieżący wyzwalacz kontynuuje wykonywanie wszelkich pozostałych instrukcji występujących po instrukcji ROLLBACK.Jeśli dowolna z tych instrukcji modyfikuje dane, modyfikacje nie są wycofywane.

Nie jest ustanawiana sesja użytkownika, jeżeli podczas wykonywania wyzwalacza przy zdarzeniu logowanie jeden z następujących warunków:

  • Oryginalna transakcja niejawna przywracana jest lub nie powiedzie się.

  • Błąd, który ma wskaźnik ważności jest większa niż 20 jest uruchamiany w treści wyzwalacza.