Udostępnij za pośrednictwem


Omówienie zdarzeń rozszerzonych

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBaza danych SQL w usłudze Microsoft Fabric (wersja zapoznawcza)

Architektura zdarzeń rozszerzonych (XEvents) umożliwia użytkownikom zbieranie jak najwięcej lub jak najmniejszych danych niezbędnych do monitorowania, identyfikowania lub rozwiązywania problemów z wydajnością w programie SQL Server, usłudze Azure SQL Database, usłudze Azure SQL Managed Instance i bazie danych SQL w usłudze Fabric. Zdarzenia rozszerzone są wysoce konfigurowalne, lekkie i skalowane dobrze. Aby uzyskać więcej informacji, zobacz Architektura zdarzeń rozszerzonych.

Zdarzenia rozszerzone zastępują przestarzałe funkcje śledzenia SQL i programu SQL Server Profiler.

Aby rozpocząć pracę z zdarzeniami rozszerzonymi, użyj przewodnika Szybki start: zdarzenia rozszerzone.

Uwaga / Notatka

W przypadku usługi Azure SQL Database, bazy danych SQL w usłudze Fabric i usłudze SQL Managed Instance przykłady kodu mogą się różnić , ponieważ pliki dla event_file obiektu docelowego są przechowywane w usłudze Azure Storage. Aby uzyskać więcej informacji, zobacz Zdarzenia rozszerzone w usłudze Azure SQL.

Zalety zdarzeń rozszerzonych

Zdarzenia rozszerzone to lekki system monitorowania wydajności, który używa minimalnych zasobów systemowych, zapewniając szczegółowy, szczegółowy widok aparatu bazy danych. Program SQL Server Management Studio udostępnia graficzny interfejs użytkownika dla zdarzeń rozszerzonych umożliwiający tworzenie, modyfikowanie i usuwanie sesji zdarzeń oraz wyświetlanie i analizowanie danych sesji. Aby dowiedzieć się więcej o obsłudze zdarzeń rozszerzonych w programie Management Studio, zobacz:

Pojęcia dotyczące zdarzeń rozszerzonych

Zdarzenia rozszerzone opierają się na istniejących pojęciach z śledzenia zdarzeń dla systemu Windows (ETW), takich jak zdarzenie i odbiorca zdarzeń, i wprowadza nowe pojęcia, takie jak akcja i predykat.

Poniższa tabela zawiera odwołania do dokumentacji umożliwiające zrozumienie pojęć w zdarzeniach rozszerzonych.

Article Description
Pakiety zdarzeń rozszerzonych Opisuje pakiety zdarzeń rozszerzonych, które zawierają obiekty. Te obiekty są używane do uzyskiwania i przetwarzania danych po uruchomieniu sesji zdarzeń rozszerzonych.
Obiekty docelowe zdarzeń rozszerzonych Opisuje odbiorców zdarzeń, którzy mogą odbierać dane podczas sesji zdarzenia.
Aparat zdarzeń rozszerzonych Opisuje aparat, który implementuje sesję zdarzeń rozszerzonych i zarządza nią.
Sesje zdarzeń rozszerzonych Opisuje sesję zdarzeń rozszerzonych.

Architektura zdarzeń rozszerzonych

Zdarzenia rozszerzone to nazwa ogólnego systemu obsługi zdarzeń dla systemów serwerowych. Infrastruktura zdarzeń rozszerzonych obsługuje korelację danych z aparatu bazy danych i w pewnych warunkach korelację danych z systemu operacyjnego i aplikacji bazy danych. W przypadku systemu operacyjnego dane wyjściowe zdarzeń rozszerzonych muszą być kierowane do śledzenia zdarzeń systemu Windows (ETW). Funkcja ETW może skorelować dane zdarzenia z danymi zdarzeń systemu operacyjnego lub aplikacji.

Wszystkie aplikacje mają punkty wykonywania, które są przydatne zarówno wewnątrz, jak i na zewnątrz aplikacji. Wewnątrz aplikacji przetwarzanie asynchroniczne można w kolejce przy użyciu informacji zbieranych podczas początkowego wykonywania zadania. Poza aplikacją punkty wykonywania udostępniają narzędzia do monitorowania z informacjami. Te informacje dotyczą cech behawioralnych i wydajności monitorowanej aplikacji.

Zdarzenia rozszerzone obsługują używanie danych zdarzeń poza procesem. Te dane są zwykle używane przez użytkowników administrowających lub obsługujących produkt przez monitorowanie wydajności lub przez użytkowników tworzących aplikacje na produkcie na potrzeby debugowania. Dane są używane lub analizowane przy użyciu narzędzi, takich jak SQL Server Management Studio, XEvent Profiler i Performance Monitor, a także narzędzia wiersza polecenia języka T-SQL lub Windows.

Zdarzenia rozszerzone mają następujące kluczowe aspekty projektowania:

  • Aparat zdarzeń rozszerzonych jest niezależny od zdarzeń. Aparat może powiązać dowolne zdarzenie z dowolnym obiektem docelowym, ponieważ aparat nie jest ograniczony przez zawartość zdarzenia. Aby uzyskać więcej informacji na temat aparatu zdarzeń rozszerzonych, zobacz Aparat zdarzeń rozszerzonych.
  • Zdarzenia są oddzielone od odbiorców zdarzeń, które są nazywane obiektami docelowymi w zdarzeniach rozszerzonych. Oznacza to, że dowolny element docelowy może odbierać dowolne zdarzenie. Ponadto każde zgłoszone zdarzenie może być automatycznie używane przez obiekt docelowy, co może rejestrować lub udostępniać dodatkowy kontekst zdarzenia. Aby uzyskać więcej informacji, zobacz Obiekty docelowe zdarzeń rozszerzonych.
  • Zdarzenia różnią się od akcji, która ma być wykonywana w przypadku wystąpienia zdarzenia. W związku z tym wszelkie działania mogą być skojarzone z dowolnym zdarzeniem.
  • Predykaty mogą dynamicznie filtrować, gdy dane zdarzenia powinny być przechwytywane. Filtrowanie dynamiczne zwiększa elastyczność infrastruktury zdarzeń rozszerzonych. Aby uzyskać więcej informacji, zobacz Pakiety zdarzeń rozszerzonych.

Zdarzenia rozszerzone mogą synchronicznie generować dane zdarzeń (i asynchronicznie przetwarzać te dane), co zapewnia elastyczne rozwiązanie do obsługi zdarzeń. Ponadto zdarzenia rozszerzone udostępniają następujące funkcje:

  • Ujednolicone podejście do obsługi zdarzeń w systemie serwera przy jednoczesnym umożliwieniu użytkownikom izolowania określonych zdarzeń na potrzeby rozwiązywania problemów.
  • Integracja z istniejącymi narzędziami ETW i obsługa jej.
  • W pełni konfigurowalny mechanizm obsługi zdarzeń korzystający z języka Transact-SQL.
  • Możliwość dynamicznego monitorowania aktywnych procesów przy minimalnym wpływie na te procesy.
  • Domyślna sesja kondycji systemu, która jest uruchamiana bez zauważalnych efektów wydajności. Sesja zbiera dane systemowe, których można użyć do rozwiązywania problemów z wydajnością. Aby uzyskać więcej informacji, zobacz Use the system_health session (Korzystanie z sesji system_health).

Zadania zdarzeń rozszerzonych

Za pomocą programu Management Studio lub Transact-SQL do wykonywania instrukcji języka Transact-SQL Data Definition Language (DDL), używania dynamicznych widoków zarządzania i funkcji lub widoków wykazu, można tworzyć proste lub złożone rozwiązania do rozwiązywania problemów z zdarzeniami rozszerzonymi programu SQL Server dla środowiska programu SQL Server.

Opis zadania Article
Za pomocą Eksploratora obiektów można zarządzać sesjami zdarzeń. Zarządzanie sesjami zdarzeń w Eksploratorze obiektów
Opisuje sposób używania dostępnych obiektów docelowych zdarzeń rozszerzonych. Obiekty docelowe zdarzeń rozszerzonych
Opisuje sposób wyświetlania i odświeżania danych docelowych. Wyświetlanie danych zdarzeń w programie SQL Server Management Studio
Opisuje architekturę sesji zdarzeń rozszerzonych. Sesje zdarzeń rozszerzonych
W tym artykule opisano sposób tworzenia sesji zdarzeń rozszerzonych i zarządzania nimi. Narzędzia zdarzeń rozszerzonych
Opisuje sposób zmiany sesji zdarzeń rozszerzonych. Modyfikowanie sesji zdarzeń rozszerzonych
Opisuje sposób uzyskiwania informacji o polach skojarzonych ze zdarzeniami. Pobieranie pól dla wszystkich zdarzeń
Opisuje, jak dowiedzieć się, jakie zdarzenia są dostępne w zarejestrowanych pakietach. SELECT i JOIN z widoków systemowych dla rozszerzonego zdarzenia
Opisuje sposób wyświetlania zdarzeń rozszerzonych i akcji, które są równoważne każdemu zdarzeniu śledzenia SQL i skojarzonych kolumn. Wyświetlanie zdarzeń rozszerzonych równoważnych z klasami zdarzeń śledzenia SQL
Opisuje sposób konwertowania istniejącego skryptu śledzenia SQL na sesję zdarzeń rozszerzonych. Konwertowanie istniejącego skryptu śledzenia SQL na sesję zdarzeń rozszerzonych
Opisuje sposób określania, które zapytania przechowują blokadę, plan zapytania i stos Transact-SQL w czasie wykonywania blokady. Określanie, które zapytania przechowują blokady
Opisuje sposób identyfikowania źródła blokad. Znajdź obiekty, które mają najwięcej blokad wykonanych na nich
Opisuje sposób używania zdarzeń rozszerzonych z śledzeniem zdarzeń dla systemu Windows w celu monitorowania aktywności systemu. Monitorowanie aktywności systemowej przy użyciu zdarzeń rozszerzonych
Używanie widoków wykazu i dynamicznych widoków zarządzania (DMV) dla zdarzeń rozszerzonych SELECT i JOIN z widoków systemowych dla zdarzeń rozszerzonych

Widoki wykazu zdarzeń rozszerzonych

Zdarzenia rozszerzone udostępniają kilka widoków wykazu. Widoki wykazu informują o metadanych lub definicjach sesji zdarzeń. Aby uzyskać informacje o wystąpieniach aktywnych sesji zdarzeń, zobacz Dynamiczne widoki zarządzania zdarzeniami rozszerzonymi.

Nazwa widoku wykazu Description
sys.database_event_session_actions Zwraca wiersz dla każdej akcji związanej z każdym zdarzeniem sesji zdarzeń w zakresie bazy danych.
sys.database_event_session_events Zwraca wiersz dla każdego zdarzenia w sesji zdarzeń o zakresie bazy danych.
sys.database_event_session_fields Zwraca wiersz dla każdej kolumny możliwej do dostosowania, która została jawnie ustawiona na zdarzenia i cele sesji w zakresie bazy danych.
sys.database_event_session_targets Zwraca wiersz dla każdego obiektu docelowego zdarzenia dla sesji zdarzeń o zakresie bazy danych.
sys.database_event_sessions Zwraca wiersz dla każdej sesji zdarzeń o zakresie bazy danych.

Dynamiczne widoki zarządzania zdarzeniami rozszerzonymi

Zdarzenia rozszerzone udostępniają kilka dynamicznych widoków zarządzania (DMV). Dynamiczne widoki zarządzania zwracają informacje o aktywnych (uruchomionych) sesjach zdarzeń, takich jak sesja i statystyki docelowe.

Nazwa dynamicznego widoku zarządzania Description
sys.dm_xe_database_session_event_actions Zwraca informacje o akcjach sesji zdarzeń w zakresie bazy danych.
sys.dm_xe_database_session_events Zwraca informacje o zdarzeniach sesji w obrębie bazy danych.
sys.dm_xe_database_session_object_columns Przedstawia wartości konfiguracji obiektów powiązanych z sesją w zakresie bazy danych.
sys.dm_xe_database_session_targets Zwraca informacje o obiektach docelowych sesji zdarzeń o zakresie bazy danych.
sys.dm_xe_database_sessions Zwraca wiersz dla każdej sesji zdarzeń o zakresie bazy danych, która jest uruchomiona w bieżącej bazie danych.

Permissions

W usłudze Azure SQL Database, bazie danych SQL w usłudze Fabric, usłudze Azure SQL Managed Instance i w programie SQL Server 2022 i nowszych wersjach, Zdarzenia rozszerzone obsługują szczegółowy model przydzielania uprawnień. Można przyznać następujące uprawnienia:

CREATE ANY DATABASE EVENT SESSION
DROP ANY DATABASE EVENT SESSION
ALTER ANY DATABASE EVENT SESSION
ALTER ANY DATABASE EVENT SESSION ADD EVENT
ALTER ANY DATABASE EVENT SESSION DROP EVENT
ALTER ANY DATABASE EVENT SESSION ADD TARGET
ALTER ANY DATABASE EVENT SESSION DROP TARGET
ALTER ANY DATABASE EVENT SESSION ENABLE
ALTER ANY DATABASE EVENT SESSION DISABLE
ALTER ANY DATABASE EVENT SESSION OPTION

Aby uzyskać informacje o tym, co każdy z tych uprawnień kontroluje, zobacz CREATE EVENT SESSION( TWORZENIE SESJI ZDARZEŃ), ALTER EVENT SESSION (ZMIENIANIE SESJI ZDARZEŃ) i DROP EVENT SESSION (USUWANIE SESJI ZDARZEŃ).

Wszystkie te uprawnienia są uwzględniane za pomocą uprawnienia CONTROL do bazy danych, instancji zarządzanej SQL lub SQL Server. W usłudze Azure SQL Database właściciel bazy danych (dbo), członkowie db_owner roli bazy danych i administratorzy serwera logicznego posiadają uprawnienia do bazy danych CONTROL . W usłudze Azure SQL Managed Instance i w programie SQL Server członkowie sysadmin roli serwera posiadają CONTROL uprawnienia na wystąpieniu.

Przykłady kodu mogą się różnić w przypadku Azure SQL Database, bazy danych SQL w Fabric oraz zarządzanego wystąpienia SQL

Niektóre przykłady kodu Transact-SQL napisane dla programu SQL Server wymagają niewielkich zmian do uruchomienia w usłudze Azure SQL Database lub bazie danych SQL Database w usłudze Fabric. Jedną z kategorii takich przykładów kodu są widoki wykazu, których prefiksy nazw różnią się w zależności od typu aparatu bazy danych:

  • server_ - prefiks programu SQL Server i usługi Azure SQL Managed Instance
  • database_ - prefiks dla usługi Azure SQL Database, bazy danych SQL w sieci szkieletowej i wystąpienia zarządzanego SQL

Usługa Azure SQL Database i baza danych SQL w platformie Fabric obsługują tylko sesje zdarzeń o zakresie bazy danych. Program SQL Server Management Studio (SSMS) obsługuje sesje zdarzeń o zakresie bazy danych dla usługi Azure SQL Database: węzeł Zdarzenia rozszerzone zawierające sesje o zakresie bazy danych jest wyświetlany w ramach każdej bazy danych w Eksploratorze obiektów.

Usługa Azure SQL Managed Instance obsługuje zarówno sesje w zakresie bazy danych, jak i sesje o zakresie serwera. Program SSMS w pełni obsługuje sesje o zakresie serwera dla usługi SQL Managed Instance: węzeł Zdarzenia rozszerzone zawierające wszystkie sesje o zakresie serwera jest wyświetlany w folderze Zarządzania dla każdego wystąpienia zarządzanego w Eksploratorze obiektów.

Uwaga / Notatka

Sesje zdarzeń o zakresie serwera są zalecane dla usługi Azure SQL Managed Instance.

Sesje zdarzeń o zakresie bazy danych nie są wyświetlane w Eksploratorze obiektów w programie SSMS dla usługi Azure SQL Managed Instance. W wystąpieniu zarządzanym SQL sesje zdarzeń o zakresie bazy danych mogą być odpytywane i zarządzane tylko przy użyciu języka Transact-SQL.

Na ilustracji poniższa tabela zawiera listę i porównuje dwa podzestawy widoków wykazu. Podzestawy mają różne prefiksy nazw, ponieważ obsługują różne typy aparatu bazy danych.

Nazwa w programie SQL Server i usłudze Azure SQL Managed Instance Nazwa w usłudze Azure SQL Database, bazie danych SQL w Fabric i usłudze Azure SQL Managed Instance
sys.server_event_session_actions
sys.server_event_session_events
sys.server_event_session_fields
sys.server_event_session_targets
sys.server_event_sessions
sys.database_event_session_actions
sys.database_event_session_events
sys.database_event_session_fields
sys.database_event_session_targets
sys.database_event_sessions