| Termin | Definicja |
|---|---|
| Event Session | Event Session to sesja rozszerzonych zdarzeń definiująca, które zdarzenia serwera są rejestrowane w celach diagnostycznych. Event Session w mechanizmie Extended EventsEvent Session, czyli sesja zdarzeń rozszerzonych, jest obiektem programu Microsoft SQL Server używanym do definiowania diagnostycznego rejestrowania zdarzeń. Sesja określa, jakie zdarzenia mają być przechwytywane, jakie dane dodatkowe należy do nich dołączyć, w jakich sytuacjach zdarzenia mają zostać odfiltrowane oraz gdzie mają być zapisywane. Mechanizm Extended Events działa na poziomie silnika SQL Server i może obserwować między innymi wykonanie zapytań, blokady, zakleszczenia, błędy, operacje wejścia-wyjścia oraz oczekiwania na zasoby. Sesja nie jest pojedynczym logiem ani raportem tworzonym automatycznie dla każdej operacji. Stanowi konfigurację, która pozostaje zarejestrowana w instancji SQL Server. Po utworzeniu może być uruchamiana i zatrzymywana niezależnie od aplikacji korzystających z baz danych. W czasie działania sesja przekazuje wystąpienia wybranych zdarzeń do jednego lub kilku celów, określanych jako targets. Dzięki temu można zbierać informacje diagnostyczne bez rejestrowania całego ruchu serwera i bez uzależniania analizy wyłącznie od komunikatów zapisanych w standardowym dzienniku błędów. Elementy definiowane w sesji zdarzeńPodstawowym składnikiem Event Session jest lista eventów, czyli konkretnych zdarzeń dostępnych w danej wersji i edycji SQL Server. Każde zdarzenie ma własny zestaw pól podstawowych oraz opcjonalnych działań dodatkowych. Pola mogą zawierać na przykład identyfikator sesji, nazwę bazy danych, tekst instrukcji, nazwę obiektu, czas trwania albo kod błędu. Działania dodatkowe, nazywane actions, pozwalają dołączyć do zdarzenia informacje kontekstowe, takie jak nazwa aplikacji, login, host lub identyfikator planu wykonania, o ile dany event i środowisko SQL Server je obsługują. Sesja może zawierać predykaty ograniczające liczbę rejestrowanych zdarzeń. Predykat filtruje zdarzenia podczas ich obsługi przez mechanizm Extended Events, na przykład pozostawiając tylko operacje dotyczące określonej bazy, konkretnego loginu, wybranego identyfikatora sesji albo zapytań przekraczających ustalony czas trwania. Oprócz eventów i filtrów sesja wskazuje target, do którego trafiają dane. Często używany jest plik zdarzeń, pozwalający później analizować zapisane dane, ale SQL Server udostępnia również cele pamięciowe i inne cele zależne od obsługiwanej konfiguracji. Ważnym ustawieniem jest sposób obsługi pamięci i przepełnienia bufora. Sesja może określać, co zrobić, gdy bufor oczekujących zdarzeń nie może przyjąć kolejnych danych. Wybór pomiędzy odrzucaniem zdarzeń a oczekiwaniem na dostępność miejsca wpływa na koszt obserwacji i na kompletność materiału diagnostycznego. Przy projektowaniu sesji trzeba więc uwzględnić częstotliwość zdarzeń, ilość zbieranych pól, czas działania oraz możliwości docelowego nośnika. Tworzenie, uruchamianie i odczyt Event SessionSesję można utworzyć za pomocą instrukcji Transact-SQL Informacje o konfiguracji sesji na poziomie serwera są dostępne w katalogowych widokach systemowych, między innymi Dane zapisane w celu plikowym analizuje się za pomocą funkcji systemowej Wykorzystanie Event Session w diagnostyce SQL ServerEvent Session jest przydatna wtedy, gdy trzeba powiązać objaw z konkretnym zdarzeniem silnika SQL Server. Sesja ukierunkowana na zakleszczenia może pomóc ustalić, które transakcje wzajemnie oczekiwały na blokowane zasoby. Sesja obserwująca błędy może wskazać kod i kontekst nieudanych operacji, a rejestrowanie długotrwałych instrukcji może ujawnić zapytania, których wykonanie przekracza przyjęty próg. W każdym przypadku warto zbierać tylko dane potrzebne do odpowiedzi na określone pytanie diagnostyczne. Podczas oceny wyników trzeba odróżnić konfigurację sesji od zachowania badanego systemu. Brak zdarzenia w pliku może oznaczać, że problem nie wystąpił w czasie działania sesji, ale może też wynikać z niewłaściwego eventu, zbyt restrykcyjnego predykatu, błędnego zakresu instancji albo zapisania danych w innym celu. Z kolei duża liczba wpisów nie musi oznaczać większej wartości diagnostycznej. Nadmiar zdarzeń utrudnia korelację i może zwiększać obciążenie związane z ich zbieraniem, formatowaniem oraz zapisem. Przed wykorzystaniem istniejącej sesji należy sprawdzić jej stan, definicję eventów, predykaty, actions, targety, ustawienia retencji oraz uprawnienia potrzebne do odczytu konfiguracji i danych. Istotne jest również zachowanie zgodności nazw zdarzeń i pól z konkretną wersją SQL Server, ponieważ dostępność elementów Extended Events może różnić się między wersjami. Prawidłowo zdefiniowana sesja dostarcza śladu operacji, który można zestawić z czasem wystąpienia błędu, obciążeniem, blokadami i działaniem aplikacji korzystającej z serwera. |