Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Baza danych SQL w usłudze Microsoft Fabric
Zdarzenia rozszerzone to uproszczona funkcja monitorowania wydajności, która umożliwia użytkownikom zbieranie danych w celu monitorowania i rozwiązywania problemów. Korzystając ze zdarzeń rozszerzonych, można wyświetlić szczegółowe informacje o operacjach wewnętrznych aparatu bazy danych, które są istotne dla celów monitorowania wydajności i rozwiązywania problemów. Aby dowiedzieć się więcej o zdarzeniach rozszerzonych, zobacz Omówienie zdarzeń rozszerzonych.
Ten artykuł ma na celu pomoc administratorom, inżynierom i deweloperom języka SQL, którzy są nowi w przypadku zdarzeń rozszerzonych i którzy chcą zacząć z niego korzystać i wyświetlać dane zdarzeń w ciągu zaledwie kilku minut.
Zdarzenia rozszerzone są również znane jako XEvents, a czasami tylko XE.
Po przeczytaniu tego artykułu możesz wykonać następujące czynności:
- Zobacz, jak utworzyć sesję zdarzeń w programie SQL Server Management Studio (SSMS), z przykładowymi zrzutami ekranu.
- Skoreluj zrzuty ekranu z równoważnymi instrukcjami Transact-SQL.
- Poznaj szczegółowo terminy i pojęcia dotyczące interfejsu użytkownika programu SSMS i instrukcji języka T-SQL XEvents.
- Dowiedz się, jak przetestować swoją sesję zdarzeń.
- Omówienie wyników sesji, w tym:
- Dostępne opcje magazynu wyników
- Przetworzone i nieprzetworzone wyniki
- Narzędzia do wyświetlania wyników na różne sposoby i w różnych skalach czasu
- Zobacz, jak można wyszukiwać i odnajdywać wszystkie dostępne zdarzenia.
- Omówienie relacji między widokami systemu zdarzeń rozszerzonych.
Wskazówka
Aby uzyskać więcej informacji na temat zdarzeń rozszerzonych w usłudze Azure SQL Database, w tym przykładów kodu, zobacz Zdarzenia rozszerzone w usłudze Azure SQL Database i usłudze Azure SQL Managed Instance.
Wymagania wstępne
Aby rozpocząć pracę, musisz:
- Zainstaluj najnowszą wersję programu SQL Server Management Studio (SSMS).
- Upewnij się, że Twoje konto ma
CREATE ANY EVENT SESSION(wprowadzone w programie SQL Server 2022) lubALTER ANY EVENT SESSIONuprawnienie serwera. - Ponadto w przypadku korzystania z programu SSMS i wyświetlania utworzonych sesji logowanie wymaga uprawnienia
VIEW SERVER PERFORMANCE STATE. - W przypadku usługi Azure SQL Database, usługi Azure SQL Managed Instance i bazy danych SQL w Fabric pliki zdarzeń rozszerzonych są przechowywane w Azure Storage. Będziesz potrzebować konta usługi Azure Storage.
Szczegółowe informacje o zabezpieczeniach i uprawnieniach związanych z zdarzeniami rozszerzonymi są dostępne na końcu tego artykułu w dodatku.
Zdarzenia rozszerzone w programie SSMS
Program SSMS udostępnia w pełni funkcjonalny interfejs użytkownika (UI) dla Zdarzeń Rozszerzonych. Przy użyciu tego interfejsu użytkownika można wykonać wiele scenariuszy bez konieczności używania języka T-SQL lub dynamicznych widoków zarządzania (DMV).
W następnej sekcji zobaczysz kroki interfejsu użytkownika, aby utworzyć sesję zdarzeń rozszerzonych i wyświetlić dane, które raportuje. Po wykonaniu kroków praktycznych lub przejrzeniu ich w tym artykule możesz przeczytać o pojęciach związanych z krokami w celu dokładniejszego zrozumienia.
Tworzenie sesji zdarzeń w programie SSMS
Podczas tworzenia sesji zdarzeń rozszerzonych, instruujesz system:
- Które zdarzenia cię interesują.
- Jak chcesz, aby system raportował dane do ciebie.
Pokaz otwiera okno dialogowe Nowa sesja , pokazuje, jak używać jego czterech stron o nazwie:
- General
- Events
- Magazyn danych
- Zaawansowany
Tekst i pomocnicze zrzuty ekranu mogą być nieco inne w twojej wersji programu SSMS, ale nadal powinny być istotne dla wyjaśnienia podstawowych pojęć.
Połącz się z instancją silnika bazy danych. Zdarzenia rozszerzone są obsługiwane od programu SQL Server 2014 (12.x), w usłudze Azure SQL Database i usłudze Azure SQL Managed Instance.
W Eksploratorze obiektów wybierz pozycję Zarządzanie zdarzeniami rozszerzonymi>. W usłudze Azure SQL Database sesje zdarzeń są ograniczone do zakresu bazy danych, więc opcja Zdarzenia rozszerzone znajduje się w każdej bazie danych, a nie w obszarze Zarządzanie.
Kliknij prawym przyciskiem myszy folder Sesje i wybierz pozycję Nowa sesja.... Okno dialogowe Nowa sesja... jest preferowane w Kreatorze nowej sesji, chociaż te dwa są podobne.
Wskazówka
W tych krokach samouczka nie klikaj OK, dopóki nie przejdziesz przez wszystkie cztery strony: Ogólne, Zdarzenia, Przechowywanie danych i Zaawansowane.
Wybierz stronę Ogólne . Następnie wpisz
YourSessionlub dowolną nazwę w polu tekstowym Nazwa sesji . Nie wybieraj jeszcze przycisku OK , ponieważ nadal musisz wprowadzić pewne szczegóły na innych stronach.Wybierz stronę Zdarzenia .
W obszarze Biblioteka zdarzeń na liście rozwijanej wybierz tylko nazwy zdarzeń.
- Wpisz
sql_statementw polu tekstowym. To filtruje listę, aby pokazać tylko zdarzenia zsql_statementw nazwie. - Przewiń i wybierz zdarzenie o nazwie
sql_statement_completed. - Wybierz przycisk
>strzałki w prawo, aby przenieść zdarzenie do pola Wybrane zdarzenia .
- Wpisz
Na stronie Zdarzenia wybierz przycisk Konfiguruj . Spowoduje to otwarcie pola Opcje konfiguracji zdarzenia dla wybranych zdarzeń.
Wybierz kartę Filtr (predykat). Następnie wybierz nowy wiersz filtru z napisem Kliknij tutaj, aby dodać klauzulę. W tym samouczku skonfigurujemy ten filtr (znany również jako predykat), aby przechwycić wszystkie
SELECTinstrukcje zawierające klauzulęHAVING.Z listy rozwijanej Pole wybierz pozycję
sqlserver.sql_text.- W obszarze Operator wybierz pozycję
like_i_sql_unicode_string. Tutaj,iw nazwie operatora oznacza brak rozróżniania wielkości liter. - W polu Wartość wpisz
%SELECT%HAVING%. Tutaj znaki procentowe (%) są symbolami wieloznacznymi reprezentującymi dowolny ciąg znaków.
Uwaga / Notatka
W dwuczęściowej nazwie pola
sqlserverjest nazwą pakietu isql_textnazwą pola. Wybrane wcześniej zdarzeniesql_statement_completedmusi znajdować się w tym samym pakiecie co wybrane pole.- W obszarze Operator wybierz pozycję
Wybierz stronę Magazyn danych.
W obszarze Cele wybierz nowy wiersz typu celu z napisem Kliknij tutaj, aby dodać nowy cel. W tym samouczku napiszemy przechwycone dane zdarzeń rozszerzonych do pliku zdarzenia. Oznacza to, że dane zdarzenia są przechowywane w pliku, który można otworzyć i wyświetlić później. Począwszy od programu SQL Server 2019 (15.x), dane zdarzeń można również zapisywać w usłudze Azure Storage. W przypadku usługi Azure SQL Database, usługi Azure SQL Managed Instance i bazy danych SQL w usłudze Fabric pliki zdarzeń są zawsze przechowywane w usłudze Azure Storage.
- Na liście rozwijanej Typ wybierz pozycję
event_file.
- Na liście rozwijanej Typ wybierz pozycję
W obszarze Właściwości wpisz pełną ścieżkę i nazwę pliku w polu tekstowym Nazwa pliku na serwerze . Możesz również użyć przycisku Przeglądaj . Rozszerzenie nazwy pliku musi mieć wartość
xel. W naszym przykładzie użyliśmy elementuC:\temp\YourSession_Target.xel.Wybierz stronę Zaawansowane . Domyślnie ten docelowy plik .xel sesji zdarzeń rozszerzonych powinien mieć minimalny wpływ lub nie mieć go wcale na wydajność serwera, jednak ustawienia na stronie Zaawansowane mogą być używane do zwiększania lub zmniejszania wykorzystania zasobów i opóźnienia.
Wybierz przycisk OK u dołu, aby utworzyć tę sesję zdarzeń.
Wróć do Eksploratora obiektów programu SSMS, otwórz lub odśwież folder Sessions i zobacz nowy węzeł sesji zdarzeń rozszerzonych
YourSession. Sesja nie została jeszcze uruchomiona. W tym samouczku uruchomimy go później.
Edytowanie sesji zdarzeń w programie SSMS
W Eksploratorze obiektów programu SSMS możesz edytować sesję zdarzeń, klikając prawym przyciskiem myszy jego węzeł, a następnie wybierając polecenie Właściwości. Wyświetlane jest to samo wielostronicowe okno dialogowe.
Tworzenie sesji zdarzeń przy użyciu języka T-SQL
W programie SSMS możesz wygenerować skrypt języka T-SQL, aby utworzyć sesję zdarzeń w następujący sposób:
- Kliknij prawym przyciskiem myszy węzeł sesji zdarzeń, a następnie wybierz pozycję Sesja skryptu jako > UTWÓRZ do > Schowka.
- Wklej do dowolnego edytora tekstów.
Oto wygenerowana CREATE EVENT SESSION instrukcja języka T-SQL dla YourSession polecenia:
CREATE EVENT SESSION [YourSession]
ON SERVER -- For SQL Server and Azure SQL Managed Instance
-- ON DATABASE -- For Azure SQL Database
ADD EVENT sqlserver.sql_statement_completed
(
ACTION(sqlserver.sql_text)
WHERE
( [sqlserver].[like_i_sql_unicode_string]([sqlserver].[sql_text], N'%SELECT%HAVING%')
)
)
ADD TARGET package0.event_file
(SET filename=N'C:\temp\YourSession_Target.xel');
GO
Uwaga / Notatka
W usłudze Azure SQL Database użyj ON DATABASE zamiast ON SERVER.
Warunkowe usunięcie sesji zdarzenia
Przed instrukcją CREATE EVENT SESSION można warunkowo wykonać instrukcję DROP EVENT SESSION, jeśli już istnieje sesja o tej samej nazwie. Spowoduje to usunięcie istniejącej sesji. Bez tego próba utworzenia sesji o tej samej nazwie powoduje błąd.
IF EXISTS (SELECT *
FROM sys.server_event_sessions
WHERE name = 'YourSession')
BEGIN
DROP EVENT SESSION YourSession
ON SERVER;
END
GO
Uruchamianie i zatrzymywanie sesji zdarzeń przy użyciu języka T-SQL
Domyślnie, po utworzeniu sesji zdarzeń, nie jest ona uruchamiana automatycznie. Sesję zdarzeń można uruchomić lub zatrzymać w dowolnym momencie, używając następującej ALTER EVENT SESSION instrukcji języka T-SQL.
ALTER EVENT SESSION [YourSession]
ON SERVER
STATE = START; -- STOP;
Istnieje możliwość skonfigurowania sesji zdarzeń tak, aby automatycznie uruchamiała się po uruchomieniu wystąpienia aparatu bazy danych. Zobacz słowo kluczowe w STARTUP STATE = ONCREATE EVENT SESSION.
Interfejs użytkownika programu SSMS oferuje odpowiednie pole wyboru Uruchom sesję zdarzeń podczas uruchamiania serwera na stronie Nowa sesja - Ogólne>.
Przetestuj sesję zdarzeń
Przetestuj sesję zdarzeń, wykonując następujące kroki:
- W Eksploratorze obiektów kliknij prawym przyciskiem myszy węzeł sesji zdarzeń, a następnie wybierz pozycję Rozpocznij sesję.
- Po nawiązaniu połączenia z tym samym serwerem (lub tą samą bazą danych w usłudze Azure SQL Database), na którym utworzono sesję zdarzeń, uruchom następującą
SELECT...HAVINGinstrukcję kilka razy. Rozważ zmianę wartości w klauzuliHAVINGdla każdego uruchomienia, zmieniając ją na przemian między 2 a 3. Dzięki temu można zobaczyć różnice w wynikach. - Kliknij prawym przyciskiem myszy węzeł sesji, a następnie wybierz polecenie Zatrzymaj sesję.
- Przeczytaj następną podsekcję dotyczącą sposobu wybierania i wyświetlania wyników.
SELECT c.name,
COUNT(*) AS [Count-Per-Column-Repeated-Name]
FROM sys.syscolumns AS c
INNER JOIN sys.sysobjects AS o
ON o.id = c.id
WHERE o.type = 'V'
AND c.name LIKE '%event%'
GROUP BY c.name
HAVING Count(*) >= 3 --2 -- Try both values during session.
ORDER BY c.name;
Aby uzyskać kompletność, poniżej przedstawiono przykładowe dane wyjściowe z poprzedniego SELECT...HAVINGelementu .
/* Approximate output, 6 rows, all HAVING Count >= 3:
name Count-Per-Column-Repeated-Name
--------------------- ------------------------------
event_group_type 4
event_group_type_desc 4
event_session_address 5
event_session_id 5
is_trigger_event 4
trace_event_id 3
*/
Wyświetl dane sesji zdarzeń jako XML
W oknie zapytania w programie SSMS uruchom następującą SELECT instrukcję, aby wyświetlić dane zdarzenia przechwycone przez sesję. Każdy wiersz reprezentuje jedno zdarzenie. Zmienia CAST(... AS xml) typ danych kolumny z nvarchar na xml. Dzięki temu można wybrać wartość kolumny, aby otworzyć ją w nowym oknie, aby ułatwić czytanie.
Uwaga / Notatka
Element event_file docelowy zawsze wstawia część liczbową w xel nazwie pliku. Przed uruchomieniem następującego zapytania należy skopiować rzeczywistą pełną nazwę xel pliku zawierającego tę część liczbową i wkleić ją do instrukcji SELECT . W poniższym przykładzie część liczbowa to _0_131085363367310000.
SELECT object_name,
file_name,
file_offset,
event_data,
'CLICK_NEXT_CELL_TO_BROWSE_XML RESULTS!' AS [CLICK_NEXT_CELL_TO_BROWSE_XML_RESULTS],
CAST(event_data AS XML) AS [event_data_XML]
-- TODO: In the SSMS results grid, click this XML cell
FROM sys.fn_xe_file_target_read_file(
'C:\Temp\YourSession_Target_0_131085363367310000.xel', NULL, NULL, NULL
);
To zapytanie udostępnia dwa sposoby wyświetlania pełnych wyników dowolnego wiersza zdarzenia:
Uruchom polecenie
SELECTw programie SSMS, a następnie wybierz komórkę w kolumnieevent_data_XML.Skopiuj ciąg XML z komórki w kolumnie
event_data. Wklej do dowolnego edytora tekstów, takiego jak Notatnik, i zapisz plik z rozszerzeniemxml. Następnie otwórz plik w przeglądarce lub edytorze, który może wyświetlać dane XML.
Dane zdarzenia w formacie XML
Następnie zobaczymy część wyników, które są w formacie XML. Poniższy kod XML jest edytowany w celu zwięzłości.
<data name="row_count"> Wyświetla wartość 6, która pasuje do naszych sześciu wyświetlanych wcześniej wierszy wyników. I widzimy całą SELECT instrukcję.
<event name="sql_statement_completed" package="sqlserver" timestamp="2016-05-24T04:06:08.997Z">
<data name="duration">
<value>111021</value>
</data>
<data name="cpu_time">
<value>109000</value>
</data>
<data name="physical_reads">
<value>0</value>
</data>
<data name="last_row_count">
<value>6</value>
</data>
<data name="offset">
<value>0</value>
</data>
<data name="offset_end">
<value>584</value>
</data>
<data name="statement">
<value>SELECT c.name,
COUNT(*) AS [Count-Per-Column-Repeated-Name]
FROM sys.syscolumns AS c
INNER JOIN sys.sysobjects AS o
ON o.id = c.id
WHERE o.type = 'V'
AND c.name LIKE '%event%'
GROUP BY c.name
HAVING Count(*) >= 3 --2 -- Try both values during session.
ORDER BY c.name;</value>
</data>
</event>
Wyświetlanie danych sesji zdarzeń w programie SSMS
Istnieje kilka zaawansowanych funkcji w interfejsie użytkownika programu SSMS, których można użyć do wyświetlania danych przechwyconych przez sesję zdarzeń. Aby uzyskać więcej informacji, zobacz Wyświetlanie danych zdarzeń w programie SQL Server Management Studio.
Możesz rozpocząć od opcji menu kontekstowego z etykietą Wyświetl dane docelowe i Oglądaj dane na żywo.
Wyświetlanie danych docelowych
W Eksploratorze obiektów programu SSMS możesz kliknąć prawym przyciskiem myszy węzeł docelowy znajdujący się w węźle sesji zdarzeń, na przykład package0.event_counter. W menu kontekstowym wybierz pozycję Wyświetl dane docelowe. Program SSMS wyświetla dane.
Wyświetlanie nie jest aktualizowane, ponieważ nowe zdarzenia występują w sesji. Możesz jednak ponownie wybrać pozycję Wyświetl dane docelowe .
Oglądaj dane na żywo
W Eksploratorze obiektów programu SSMS możesz kliknąć prawym przyciskiem myszy węzeł sesji zdarzeń. W menu kontekstowym wybierz pozycję Obejrzyj dane na żywo. Program SSMS wyświetla dane przychodzące w miarę kontynuowania ich odbierania w czasie rzeczywistym.
Pojęcia i terminy w rozszerzonych zdarzeniach
W poniższej tabeli wymieniono terminy używane dla zdarzeń rozszerzonych i opisano ich znaczenie.
| Termin | Description |
|---|---|
event session |
Konstrukcja wyśrodkowana wokół jednego lub większej liczby zdarzeń oraz elementów pomocniczych, takich jak akcje, są obiektami docelowymi. Instrukcja CREATE EVENT SESSION tworzy każdą sesję zdarzeń. Możesz ALTER sesję zdarzeń uruchomić i zatrzymać w dowolnym momencie.Sesja zdarzeń jest czasami nazywana po prostu sesją, gdy kontekst wskazuje, że chodzi o sesję zdarzeń. Więcej szczegółów na temat sesji zdarzeń można znaleźć w rozdziale Sesje zdarzeń rozszerzonych. |
event |
Określone wystąpienie w systemie, które jest obserwowane przez aktywną sesję monitorowania zdarzeń. Na przykład sql_statement_completed zdarzenie reprezentuje moment ukończenia danej instrukcji języka T-SQL. Zdarzenie może zgłaszać czas trwania i inne dane. |
target |
Element, który odbiera dane wyjściowe z przechwyconego zdarzenia. Obiekt docelowy wyświetla dane. Przykłady obejmują element docelowy używany wcześniej w tym szybkim starcie event_file, oraz ring_buffer element docelowy, który zachowuje najnowsze zdarzenia w pamięci.Dowolny rodzaj obiektu docelowego może być używany w dowolnej sesji wydarzeń. Aby uzyskać szczegółowe informacje, zobacz Cele dla zdarzeń rozszerzonych. |
action |
Pole znane z zdarzenia. Dane z pola są wysyłane do miejsca docelowego. Pole akcji jest ściśle powiązane z filtrem predykatu. |
predicate lub filtr |
Testowanie danych w polu zdarzenia, wykorzystywane tak, aby tylko interesujący podzbiór wystąpień zdarzeń był wysyłany do miejsca docelowego. Na przykład filtr może obejmować wyłącznie te sql_statement_completed wystąpienia zdarzeń, w których instrukcja T-SQL zawierała ciąg HAVING. |
package |
Kwalifikator nazwy dołączony do każdego elementu w zestawie elementów, które skupiają się wokół rdzenia zdarzeń. Na przykład pakiet może zawierać zdarzenia dotyczące tekstu T-SQL. Jedno zdarzenie może dotyczyć całego języka T-SQL w partii. Tymczasem kolejne węższe zdarzenie dotyczy poszczególnych instrukcji języka T-SQL. Ponadto, dla dowolnej instrukcji T-SQL, istnieje zdarzenie started oraz zdarzenie completed.W pakiecie ze zdarzeniami zawarte są także pola odpowiednie dla tych zdarzeń. Większość celów znajduje się w package0 i są używane ze zdarzeniami z wielu innych pakietów. |
Rozszerzone scenariusze zdarzeń i szczegóły użycia
Istnieje wiele scenariuszy używania zdarzeń rozszerzonych do monitorowania i rozwiązywania problemów z aparatem bazy danych i obciążeniami zapytań. W poniższych artykułach przedstawiono przykłady użycia scenariuszy związanych z blokadą:
-
Znajdź obiekty, które mają najwięcej blokad wykonanych na nich
- W tym scenariuszu użyto obiektu docelowego histogramu , który przetwarza nieprzetworzone dane zdarzenia przed wyświetleniem ich w postaci podsumowanej (zasobnikowej).
-
Określanie, które zapytania przechowują blokady
- W tym scenariuszu używany jest cel pair_matching, w którym para zdarzeń to
sqlserver.lock_acquireisqlserver.lock_release.
- W tym scenariuszu używany jest cel pair_matching, w którym para zdarzeń to
Jak odnajdywać zdarzenia dostępne w pakietach
Następujące zapytanie zwraca wiersz dla każdego dostępnego zdarzenia, którego nazwa zawiera trzy znaki ciągu sql. Możesz edytować klauzulę, LIKE aby wyszukać różne nazwy zdarzeń. Zestaw wyników identyfikuje również pakiet zawierający zdarzenie.
SELECT -- Find an event you want.
p.name AS [Package-Name],
o.object_type,
o.name AS [Object-Name],
o.description AS [Object-Descr],
p.guid AS [Package-Guid]
FROM sys.dm_xe_packages AS p
INNER JOIN sys.dm_xe_objects AS o
ON p.guid = o.package_guid
WHERE o.object_type = 'event' --'action' --'target'
AND p.name LIKE '%'
AND o.name LIKE '%sql%'
ORDER BY p.name,
o.object_type,
o.name;
Poniższy przykładowy wynik przedstawia zwrócony wiersz, przekształcony tutaj do formatu column name = value. Dane pochodzą ze sql_statement_completed zdarzenia, które zostało użyte w poprzednich przykładowych krokach. Opis obiektu (zdarzenie, w tym przykładzie) służy jako ciąg dokumentacji.
Package-Name = sqlserver
object_type = event
Object-Name = sql_statement_completed
Object-Descr = Occurs when a Transact-SQL statement has completed.
Package-Guid = 655FD93F-3364-40D5-B2BA-330F7FFB6491
Znajdowanie zdarzeń przy użyciu interfejsu użytkownika programu SSMS
Inną opcją wyszukiwania zdarzeń według nazwy jest użycie okna dialogowego Nowa biblioteka zdarzeń > sesji>, które jest wyświetlane na poprzednim zrzucie ekranu. Możesz wpisać częściową nazwę zdarzenia i znaleźć wszystkie pasujące nazwy zdarzeń.
Klasy zdarzeń śledzenia SQL
Opis używania zdarzeń rozszerzonych z klasami zdarzeń śledzenia SQL i kolumnami jest dostępny pod adresem: Wyświetl rozszerzone zdarzenia równoważne klasom zdarzeń śledzenia SQL.
Śledzenie zdarzeń dla systemu Windows (ETW)
Opisy korzystania z Rozszerzonych Zdarzeń (Extended Events) z Śledzeniem Zdarzeń dla systemu Windows (ETW) są dostępne pod następującym adresem:
Sesje zdarzeń systemowych
W SQL Server i Azure SQL Managed Instance domyślnie tworzonych jest kilka sesji zdarzeń systemowych, które są skonfigurowane do uruchamiania wraz z uruchomieniem aparatu bazy danych. Podobnie jak większość sesji zdarzeń, zużywają niewielką ilość zasobów i nie mają znaczącego wpływu na wydajność pracy. Firma Microsoft zaleca, aby te sesje pozostały włączone i uruchomione. Sesje zdrowotne, szczególnie sesja system_health, są często przydatne do monitorowania i rozwiązywania problemów.
Te sesje zdarzeń można zobaczyć w Eksploratorze obiektów programu SSMS w obszarze Zarządzanie sesjami > zdarzeń > rozszerzonych. Na przykład w programie SQL Server następujące sesje zdarzeń systemowych to:
AlwaysOn_healthsystem_healthtelemetry_events
Dostawca programu PowerShell
Zdarzenia rozszerzone można zarządzać przy użyciu dostawcy programu SQL Server PowerShell. Aby uzyskać więcej informacji, zobacz Use the PowerShell Provider for Extended Events (Używanie dostawcy programu PowerShell dla zdarzeń rozszerzonych).
Widoki systemowe
Widoki systemowe dla zdarzeń rozszerzonych obejmują:
-
Widoki katalogu: informacje o sesjach zdarzenia zdefiniowanych przez program
CREATE EVENT SESSION. - Dynamiczne widoki zarządzania (DMV): informacje o aktywnych (uruchomionych) sesjach zdarzeń.
SELECTs i JOINs z widoków systemowych dla zdarzeń rozszerzonych w programie SQL Server zawierają informacje o:
- Jak połączyć widoki
- Kilka przydatnych zapytań na podstawie tych widoków
- Korelacja między:
- Wyświetlanie kolumn
-
CREATE EVENT SESSIONKlauzule - Interfejs użytkownika programu SSMS
Dodatek: Zapytania do znajdowania posiadaczy uprawnień do Zdarzeń Rozszerzonych
Uprawnienia wymienione w tym artykule to:
ALTER ANY EVENT SESSIONVIEW SERVER STATECONTROL SERVER
Poniższa SELECT...UNION ALL instrukcja zwraca wiersze, które pokazują, kto ma niezbędne uprawnienia do tworzenia sesji zdarzeń i wykonywania zapytań dotyczących widoków wykazu systemu dla zdarzeń rozszerzonych.
-- Ascertain who has the permissions listed in the ON clause.
-- 'CONTROL SERVER' permission includes all lower permissions like
-- 'ALTER ANY EVENT SESSION' and 'VIEW SERVER STATE'.
SELECT 'Owner-is-Principal' AS [Type-That-Owns-Permission],
NULL AS [Role-Name],
prin.name AS [Owner-Name],
PERM.permission_name COLLATE Latin1_General_CI_AS_KS_WS AS [Permission-Name]
FROM sys.server_permissions AS PERM
INNER JOIN sys.server_principals AS prin
ON prin.principal_id = PERM.grantee_principal_id
WHERE PERM.permission_name IN (
'CREATE ANY EVENT SESSION',
'ALTER ANY EVENT SESSION',
'VIEW SERVER PERFORMANCE STATE',
'VIEW SERVER STATE',
'CONTROL SERVER'
)
UNION ALL
-- Plus check for members of the 'sysadmin' fixed server role,
-- because 'sysadmin' includes the 'CONTROL SERVER' permission.
SELECT 'Owner-is-Role',
prin.name, -- [Role-Name]
CAST((IsNull(pri2.name, N'No members')) AS NVARCHAR(128)),
NULL
FROM sys.server_role_members AS rolm
RIGHT JOIN sys.server_principals AS prin
ON prin.principal_id = rolm.role_principal_id
LEFT JOIN sys.server_principals AS pri2
ON rolm.member_principal_id = pri2.principal_id
WHERE prin.name = 'sysadmin';
HAS_PERMS_BY_NAME, funkcja
SELECT Poniższa instrukcja zgłasza twoje uprawnienia. Opiera się na wbudowanej funkcji HAS_PERMS_BY_NAME.
Ponadto, jeśli masz uprawnienia do tymczasowego występowania w roli innych identyfikatorów logowania, możesz usunąć komentarz z instrukcji EXECUTE AS i REVERT, i zobaczyć, czy inne identyfikatory logowania mają ALTER ANY EVENT SESSION uprawnienie.
--EXECUTE AS LOGIN = 'LoginNameHere';
SELECT HAS_PERMS_BY_NAME(NULL, NULL, 'ALTER ANY EVENT SESSION');
--REVERT;
Treści powiązane
- Omówienie zdarzeń rozszerzonych
- Sesje zdarzeń rozszerzonych
- Cele dla zdarzeń rozszerzonych
- CREATE EVENT SESSION (Transact-SQL)