Udostępnij za pośrednictwem


Wyzwalacze logowania

Wyzwalacze logowania ognia procedur przechowywanych w odpowiedzi na zdarzenie logowania.To zdarzenie jest wywoływane, gdy sesja użytkownika jest ustalana z wystąpienie z SQL Server.Wyzwalacze logowania ognia po rejestrowania zakończeniu fazy uwierzytelnianie, ale zanim użytkownik faktycznie jest ustanawiana sesja.Dlatego wszystkie komunikaty pochodzące z wewnątrz wyzwalacz, który zazwyczaj docierają użytkownika, takie jak komunikaty o błędach i komunikaty z instrukcja drukowania są kierowane do SQL Server dziennik błędów.Wyzwalacze logowania nie uruchamiaj Jeśli uwierzytelnianie nie powiedzie się.

Można użyć wyzwalaczy logowania do sesji serwera inspekcji i kontroli, takie jak śledzenie aktywności logowania ograniczanie uprawnień do logowania do SQL Server, lub ograniczenie liczby sesji dla określonego identyfikatora logowania.Na przykład, poniższy kod wyzwalacza logowania odmawia dziennika w próby SQL Server inicjowane przez logowania login_test istnieją już trzy sesje użytkownika utworzone przez tego logowania.

USE master;
GO
CREATE LOGIN login_test WITH PASSWORD = '3KHJ6dhx(0xVYsdf' MUST_CHANGE,
    CHECK_EXPIRATION = ON;
GO
GRANT VIEW SERVER STATE TO login_test;
GO
CREATE TRIGGER connection_limit_trigger
ON ALL SERVER WITH EXECUTE AS 'login_test'
FOR LOGON
AS
BEGIN
IF ORIGINAL_LOGIN()= 'login_test' AND
    (SELECT COUNT(*) FROM sys.dm_exec_sessions
            WHERE is_user_process = 1 AND
                original_login_name = 'login_test') > 3
    ROLLBACK;
END;

Należy zauważyć, że zdarzenia logowania odpowiada zdarzenie śledzenia SQL AUDIT_LOGIN, które mogą być używane w powiadomienia o zdarzeniach.Podstawowa różnica między wyzwalaczami i zdarzenie powiadomienia jest, że wyzwalacze są wywoływane synchronicznie z zdarzenies, dlatego zdarzenie powiadomienia są asynchroniczne.Oznacza to, na przykład, jeśli chcesz zatrzymać sesja ustanowienie należy użyć wyzwalacza logowania.Powiadomienie o zdarzeniu na zdarzenie AUDIT_LOGIN nie można użyć do tego celu.

Dane zdarzenia logowania wyzwalacz przechwytywania

Służy do przechwytywania danych XML o zdarzenia logowania do użycia wewnątrz wyzwalaczy logowania, EVENTDATA funkcja.Aby uzyskać więcej informacji, zobacz Projektowanie i wdrażanie strukturalnego magazynu (aparat bazy danych).zdarzenie logowania 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 sesji wnosi się ustanowić.

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

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

  • <IsPooled>
    Jest 1 , jeśli połączenie jest ponownie przez 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ą zarejestrowane poziom serwera i znajdują się w wzorca bazy danych.

Aby utworzyć wyzwalacz logowania

Aby zmodyfikować wyzwalacza logowania

Aby usunąć wyzwalacz logowania

Uzyskiwanie informacji dotyczących logowania wyzwalaczy

Można przeglądać metadane dotyczące wyzwalaczy logowania przez badanie sys.server_triggers wykazu widoku.