Extended Events w SQL Server

Poniżej omówię w skrócie kolejne narzędzie monitorujące zdarzenia w naszej bazie danych jakim jest Extended Events. Uruchamiamy Management Studio i znajdujemy narzędzie w zakładce Management. Rozwijamy je i w środku odnajdujemy gałąź Sessions.

Możemy teraz uruchomić kreatora naszej sesji jak to ładnie nazwali a co będzie naszym procesem monitorującym.

Albo uruchomić prostszą wersję

My uruchomimy wizarda

Wpisujemy nazwę naszej „sesji”.Mozemy zaznaczyć aby uruchamiała się razem z nasza instancją.

Na razie nie posiadamy żadnego szablonu więc wybieramy drugą opcję

Teraz wybieramy jakie zdarzenia w naszej instancji chcemy monitorować. W naszym przykładzie będą to podstawowe operacje na bazie danych (tworzenie, zmiana rozmiaru plików i usunięcie).

Po wybraniu przy użyciu strzałki dodajemy go do prawego panelu.

Następnie wybiramy jakie dane mają być wyświetlone po wykryciu zdarzenia.

Tu na razie nic nie zmieniamy. Możemy tu ustawić opcję filtrowania danych.

Tutaj ustawimy by zarejestrowane dane zostały zapisane do pliku na dysku w celu późniejszej analizy. Określamy oprócz ścieżki do pliku, jego wielkość, ilość plików (po wykorzystaniu maksymalnej liczny zostaną one nadpisane).

Małe podsumowanie

Przy pomocy przycisku SCRIPT możemy utworzyć skrypt do utworzenia naszej sesji


CREATE EVENT SESSION [MySession_1] ON SERVER
ADD EVENT sqlserver.database_created(
ACTION(sqlos.task_time,sqlserver.client_hostname,sqlserver.database_id,
sqlserver.database_name,sqlserver.nt_username,
sqlserver.session_nt_username,sqlserver.sql_text,sqlserver.username)),
ADD EVENT sqlserver.database_dropped(
ACTION(sqlos.task_time,sqlserver.client_hostname,sqlserver.database_id,
sqlserver.database_name,sqlserver.nt_username,
sqlserver.session_nt_username,sqlserver.sql_text,sqlserver.username)),
ADD EVENT sqlserver.database_file_size_change(
ACTION(sqlos.task_time,sqlserver.client_hostname,sqlserver.database_id,
sqlserver.database_name,sqlserver.nt_username,
sqlserver.session_nt_username,sqlserver.sql_text,sqlserver.username)),
ADD EVENT sqlserver.databases_log_file_size_changed(
ACTION(sqlos.task_time,sqlserver.client_hostname,sqlserver.database_id,
sqlserver.database_name,sqlserver.nt_username,
sqlserver.session_nt_username,sqlserver.sql_text,sqlserver.username))
ADD TARGET package0.event_file
(SET filename=N'C:\SQLData\MySession_1.xel',max_file_size=(30))
WITH (STARTUP_STATE=OFF)
GO

No i kończymy tworzenie. Na koniec zaznaczamy aby sesja została uruchomiona zaraz po utworzeniu oraz aby zdarzenie zostało wyświetlone jak tylko się wydarzy.

Po zamknięciu kreatora otworzy się okno w którym będą wyświetlane wykryte zdarzenia.

W drzewie Session pojawi się nasz nowy element

Jakby okno ze zdarzeniami nie było otwarte możemy go zawsze otworzyć z menu

Tak więc mamy otwarte okno monitorujące nasze zdarzenia (na razie puste)

Pora na kilka „zdarzeń”. Na początek utworzymy nową bazę.

Zmienimy rozmiar pliku MDF

Zmienimy rozmiar pliku LDF

A teraz zalogujemy się na innego użytkownika i usunięmy naszą testową bazę.

Jak widać wszystko jest rejestrowane (kto usunął, kiedy i jakiego polecenia użył).
Tak jak wcześniej skonfigurowaliśmy wszystkie zdarzenia zostały zapisane do pliku XEL.

Naszą sesję możemy w każdej chwili zatrzymać aby dalej nie monitorowała zdarzeń.

W momencie kiedy otwarte jest okno wyświetlające nasze zdarzenia w górnym menu pojawia się dodatkowa opcja „Extended Events”.

Jest tu kilka opcji do skonfigurowania.

Jeśli naciśniemy poniższy przycisk, możemy wybrać plik XEL do wczytania do okna ze zdarzeniami.

Możemy też wyeksportować nasze ustawienia sesji jako szablon XML do wykorzystania przy tworzeniu nowych sesji.

Przy tworzeniu nowej sesji p oprostu wybieramy w template nasza szablon

Jak już wszystko przetestowaliśmy, zatrzymujemy sesję a następnie możemy ją usunąć poleceniem

DROP EVENT SESSION [MySession_1] ON SERVER

lub z menu

Ten wpis został opublikowany w kategorii Microsoft SQL. Dodaj zakładkę do bezpośredniego odnośnika.

Dodaj komentarz