Serwisanci dostępni teraz · czynne całą dobę, także w weekendy i świętaWarszawa i okolice · dojazd bezpłatny
Darmowa diagnoza laptopa
Darmowa diagnoza laptopa
Dojazd do klienta bezpłatnie
Dojazd do klienta bezpłatnie
Laptopy zastępcze bezpłatnie
Laptopy zastępcze bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie

SQL Server Extended Events Service

Termin Definicja
SQL Server Extended Events Service

Extended Events Service to mechanizm zbierania zdarzeń diagnostycznych, lżejszy od klasycznego Profilera.

Rola SQL Server Extended Events w obserwowaniu pracy silnika

SQL Server Extended Events to wbudowany w Microsoft SQL Server mechanizm rejestrowania zdarzeń zachodzących w silniku bazy danych. Zdarzeniem może być między innymi wykonanie instrukcji, błąd, przekroczenie czasu oczekiwania, zakleszczenie, zakończenie kompilacji planu zapytania albo wystąpienie określonego typu blokady. Mechanizm działa na podstawie sesji Extended Events, w których administrator wybiera zdarzenia, warunki filtrowania, dodatkowe dane oraz miejsce zapisu wyników.

Extended Events nie jest odrębną usługą systemu Windows uruchamianą obok usługi SQL Server. Jest funkcją silnika SQL Server, zarządzaną w ramach instancji bazy danych. Określenie „Extended Events Service” może więc odnosić się do usługi lub mechanizmu zbierania zdarzeń, ale technicznie analizowane są sesje XE obsługiwane przez konkretną instancję SQL Server. Rozwiązanie zastąpiło w wielu zadaniach SQL Server Profiler i śledzenia SQL Trace, ponieważ pozwala precyzyjniej ograniczyć zakres obserwacji oraz zmniejszyć narzut związany z diagnostyką.

Sesje, zdarzenia i warunki filtrowania

Sesja Extended Events składa się z definicji zdarzeń, opcjonalnych predykatów filtrujących, akcji oraz celów zapisu. Zdarzenie opisuje sytuację wykrywaną przez silnik, natomiast akcja dołącza dodatkowe informacje, takie jak identyfikator sesji, nazwa bazy danych, tekst instrukcji lub identyfikator użytkownika. Filtrowanie odbywa się po stronie mechanizmu zdarzeń, dzięki czemu nie trzeba gromadzić wszystkich zdarzeń i dopiero później odrzucać niepotrzebnych wpisów.

Sesje można tworzyć w SQL Server Management Studio albo poleceniami Transact-SQL. Przykładowa definicja może używać składni CREATE EVENT SESSION z klauzulą ON SERVER, ponieważ sesja serwerowa obserwuje zdarzenia instancji SQL Server. Po utworzeniu sesję uruchamia się poleceniem ALTER EVENT SESSION ... ON SERVER STATE = START. Jej stan i konfigurację można sprawdzać między innymi w widokach katalogowych sys.server_event_sessions oraz sys.server_event_session_events, a aktywne sesje są widoczne w widokach dynamicznych związanych z przestrzenią nazw sys.dm_xe.

Zapisywanie danych w pliku i diagnostyka problemów

Najczęściej wykorzystywane cele sesji to event_file i ring_buffer. Cel event_file zapisuje dane do plików rozszerzonych zdarzeń, które można później odczytać także po zakończeniu sesji lub restarcie instancji, o ile pliki nie zostały usunięte. Cel ring_buffer przechowuje dane w pamięci w formie bufora cyklicznego. Po zapełnieniu starsze wpisy są zastępowane nowymi, dlatego ring buffer nadaje się przede wszystkim do krótkiej obserwacji bieżącego stanu.

W praktycznej diagnostyce można przygotować sesję rejestrującą konkretne błędy, długotrwałe wykonania zapytań, oczekiwania blokujące pracę lub informacje o zakleszczeniach. Należy ograniczyć zakres przez predykaty, na przykład do jednej bazy danych, wybranego identyfikatora sesji albo określonego czasu trwania. Zbyt szeroka sesja może generować dużo danych i utrudniać analizę, natomiast zbyt wąski filtr może pominąć przyczynę problemu. Pliki XE odczytuje się w SQL Server Management Studio albo za pomocą funkcji tabelarycznych, takich jak sys.fn_xe_file_target_read_file.

Bezpieczne użycie Extended Events podczas serwisowej diagnostyki

Przed uruchomieniem sesji trzeba ustalić, jaki problem ma zostać potwierdzony i jak długo ma trwać obserwacja. Warto zapisać nazwę instancji, bazę danych, czas rozpoczęcia oraz konfigurację sesji, aby później odróżnić zdarzenia diagnostyczne od normalnego ruchu. Po zakończeniu pomiaru sesję należy zatrzymać, jeżeli nie jest potrzebna stale, używając polecenia ALTER EVENT SESSION ... ON SERVER STATE = STOP. Samo zatrzymanie nie usuwa definicji, dlatego można ją ponownie uruchomić bez tworzenia od początku.

Analiza wyników powinna obejmować korelację czasu zdarzenia z obciążeniem procesora, pamięcią, operacjami dyskowymi, blokadami i błędami zgłaszanymi przez aplikację. Extended Events pokazuje zdarzenia z punktu widzenia SQL Server, ale nie zastępuje pełnej oceny systemu operacyjnego ani sprzętu. Przy awariach laptopów i komputerów PC używanych jako stanowiska administracyjne lub klienckie diagnostyka może obejmować sprawdzenie instalacji narzędzi, uprawnień do odczytu plików sesji, dostępności dysku oraz poprawności połączenia z właściwą instancją SQL Server.

+48 22 100 48 29Zadzwoń teraz · serwisant w 1 godzinę