Udostępnij za pośrednictwem


Logon Triggers

Wyzwalacze logowania uruchomienie procedur przechowywanych w odpowiedzi na zdarzenie logowanie.To zdarzenie jest wywoływane, gdy sesja użytkownika jest ustanawiana z wystąpienie SQL Server. Wyzwalacze logowania ognia po rejestrowanie zakończeniu fazy uwierzytelnianie, ale zanim użytkownik faktycznie jest ustanawiana sesja.Dlatego też wszystkich wiadomości pochodzących z wewnątrz wyzwalacz, który zazwyczaj docierają użytkownika, takie jak komunikaty o błędach i komunikaty z instrukcja PRINT są kierowane do SQL Server Dziennik błędów. Wyzwalacze logowania nie wyzwalana, jeśli uwierzytelnianie nie powiedzie się.

Można formować także za pomocą wyzwalaczy logowania do inspekcji i sterowanie sesjami serwera, takie jak śledzenie operacji logowania, ograniczenia logowania do SQL Server, lub ograniczenie liczby sesji dla określonego identyfikatora logowania. Na przykład poniższy kod wyzwalacza logowania odrzuca dziennika w próby SQL Server zainicjowane przez identyfikator logowania login_test Jeśli istnieją już trzy sesji użytkownika utworzonych przez ten identyfikator logowania.

Należy zwrócić uwagę, czy zdarzenie logowanie odpowiada zdarzenie AUDIT_LOGIN śledzenia SQL, które mogą być używane w powiadomień o zdarzeniach.Podstawową różnicą między wyzwalaczami i zdarzenie powiadomienia jest, że wyzwalacze są wywoływane synchronicznie z zdarzenie s, natomiast zdarzenie powiadomienia są asynchroniczne.Oznacza to, na przykład, jeśli chcesz zatrzymać sesja z ustanowione, należy użyć wyzwalacza logowania.Powiadomienie o zdarzeniu zdarzenie AUDIT_LOGIN nie można użyć do tego celu.

Dane zdarzeń logowania wyzwalacz przechwytywania

Aby przechwytywać dane XML o zdarzeniach LOGON do użycia wewnątrz wyzwalacze logowania, należy użyć EVENTDATA funkcja.Aby uzyskać więcej informacji zobaczDesigning and Implementing Structured Storage (Database Engine).Zdarzenie logowanie zwraca schemat danych następujących zdarzeń:

<EVENT_INSTANCE>

    <EventType>event_type</EventType>

    <PostTime>post_time</PostTime>

    <SPID>spid</SPID>

    <ServerName>server_name</ServerName>

<LoginName>login_name</LoginName>

<LoginType>login_type</LoginType>

<SID>sid</SID>

<ClientHost>client_host</ClientHost>

<IsPooled>is_pooled</IsPooled>

</EVENT_INSTANCE>

  • <EventType>
    Zawiera LOGON.

  • <PostTime>
    Zawiera czas podczas sesja jest proszony o ustalane.

  • <SID>
    Zawiera nazwę logowania określony podstawowy algorytmem 64 binarny strumień numeru identyfikacyjnego zabezpieczeń (SID).

  • <ClientHost>
    Zawiera nazwę hosta klient, z którym połączenie zostanie nawiązane.Wartość "&lt;local_machine&gt;"Jeśli nazwa klient i serwera są takie same. W przeciwnym razie wartość jest adresem IP klient.

  • <IsPooled>
    Czy 1 Jeśli połączenie zostanie ponownie użyty przy użyciu puli połączeń. W przeciwnym razie wartość jest 0.

Tworzenie, modyfikowanie i upuszczając wyzwalaczy logowania

Wyzwalacze logowania można utworzyć z dowolnej bazy danych, ale są rejestrowane poziom serwera i znajdują się w wzorzec bazy danych.

Aby utworzyć wyzwalacz logowania

Aby zmodyfikować wyzwalacza logowania

Aby usunąć wyzwalacz logowania

Uzyskiwanie informacji na temat wyzwalaczy logowania

Metadane dotyczące logowania wyzwalaczy można przeglądać za pomocą kwerend wysyłanych do sys.server_triggers Służy do wyświetlania katalogu.