Přehled rozšířených událostí

Platí pro:SQL ServerAzure SQL DatabaseSpravovaná instance Azure SQLDatabáze SQL v Microsoft Fabric

Architektura Extended Events (XEvents) umožňuje uživatelům shromažďovat potřebné množství dat pro monitorování, identifikaci nebo řešení problémů s výkonem v SQL Serveru, Azure SQL Database, Azure SQL Managed Instance a SQL databázi ve službě Fabric. Rozšířené události jsou vysoce konfigurovatelné, nenáročné a dobře se škálují. Další informace naleznete v tématu Architektura rozšířených událostí.

Rozšířené události nahrazují zastaralé funkce sql Trace a SQL Server Profiler.

Pokud chcete začít s rozšířenými událostmi, použijte rychlý start: Rozšířené události.

Poznámka:

V případě Azure SQL Database, SQL databáze ve Fabric a SQL Managed Instance se příklady kódu můžou lišit, protože soubory pro cíl event_file jsou uloženy ve službě Azure Storage. Další informace najdete v tématu Rozšířené události v Azure SQL.

Výhody rozšířených událostí

Extended Events je jednoduchý systém monitorování výkonu, který používá minimální systémové prostředky a poskytuje podrobné podrobné zobrazení databázového stroje. SQL Server Management Studio poskytuje grafické uživatelské rozhraní pro rozšířené události, které umožňují vytvářet, upravovat a odstraňovat relace událostí a zobrazovat a analyzovat data relací. Další informace o podpoře rozšířených událostí v sadě Management Studio najdete tady:

Koncepty rozšířených událostí

Rozšířené události vycházejí ze stávajících konceptů trasování událostí pro Windows (ETW), jako jsou události a příjemce událostí, a zavádí nové koncepty, jako je akce a predikát.

Následující tabulka obsahuje odkazy na dokumentaci, které vám porozumí konceptům rozšířených událostí.

Article Description
Balíčky rozšířených událostí Popisuje balíčky rozšířených událostí, které obsahují objekty. Tyto objekty slouží ke získávání a zpracování dat během běhu relace Extended Events.
Cíle rozšířených událostí Popisuje příjemce události, kteří mohou přijímat data v průběhu relace události.
Modul rozšířených událostí Popisuje modul, který zajišťuje implementaci a správu relace Extended Events.
Relace rozšířených událostí Popisuje relaci rozšířených událostí.

Architektura rozšířených událostí

Rozšířené události jsou název obecného systému zpracování událostí pro serverové systémy. Infrastruktura rozšířených událostí podporuje korelaci dat z databázového stroje a za určitých podmínek korelaci dat z operačního systému a databázových aplikací. V případě operačního systému musí být výstup funkce Extended Events směřován do Event Tracing for Windows (ETW). ETW může propojit data událostí s daty událostí operačního systému nebo aplikace.

Všechny aplikace mají spouštěcí body, které jsou užitečné jak uvnitř, tak mimo aplikaci. V aplikaci lze asynchronní zpracování zařadit do fronty s využitím informací získaných při počátečním spuštění úlohy. Mimo aplikaci body provádění poskytují monitorovací nástroje s informacemi. Informace o chování a charakteristikách výkonu monitorované aplikace.

Rozšířené události podporují použití dat událostí mimo proces. Tato data obvykle používají uživatelé, kteří spravují nebo podporují produkt tím, že provádějí monitorování výkonu nebo vyvíjejí aplikace na produktu pro účely ladění. Data se využívají nebo analyzují pomocí nástrojů, jako jsou SQL Server Management Studio, XEvent Profiler a Sledování výkonu a nástroje příkazového řádku T-SQL nebo Windows.

Rozšířené události mají následující klíčové aspekty návrhu:

  • Modul rozšířených událostí je nezávislý na událostech. Modul může svázat jakoukoli událost s jakýmkoli cílem, protože modul není omezen obsahem události. Další informace o modulu rozšířených událostí naleznete v tématu Modul rozšířených událostí.
  • Události jsou oddělené od příjemců událostí, které se nazývají cíle v rozšířených událostech. To znamená, že jakýkoli cíl může přijímat jakoukoli událost. Kromě toho může být každá vyvolaná událost automaticky zpracována cílem, který ji může zaznamenat nebo doplnit její další kontext. Další informace najdete v tématu Cíle rozšířených událostí.
  • Události se liší od akce, která se má provést, když dojde k události. Proto může být jakákoli akce přidružená k jakékoli události.
  • Predikáty můžou dynamicky filtrovat, když se mají zachytit data událostí. Dynamické filtrování zvyšuje flexibilitu infrastruktury rozšířených událostí. Další informace naleznete v tématu Balíčky rozšířených událostí.

Rozšířené události můžou synchronně generovat data událostí (a asynchronně zpracovávat tato data), což poskytuje flexibilní řešení pro zpracování událostí. Rozšířené události navíc poskytují následující funkce:

  • Jednotný přístup ke zpracování událostí v systému serveru a zároveň umožňuje uživatelům izolovat konkrétní události pro účely řešení potíží.
  • Integrace se stávajícími nástroji ETW a jejich podpora.
  • Plně konfigurovatelný mechanismus zpracování událostí, který používá Transact-SQL.
  • Schopnost dynamicky monitorovat aktivní procesy a současně mít na tyto procesy minimální vliv.
  • Výchozí relace stavu systému, která se spouští bez znatelného dopadu na výkon. Relace shromažďuje data o systému, která můžete použít jako pomůcku při řešení potíží s výkonem. Další informace naleznete v tématu Použití relace system_health.

Úlohy nástroje Extended Events

Pomocí sady Management Studio nebo Transact-SQL můžete spouštět příkazy jazyka DDL (Transact-SQL Data Definition Language), využívat zobrazení a funkce dynamické správy nebo zobrazení katalogu, můžete vytvořit jednoduchá nebo složitá řešení potíží s rozšířenými událostmi SQL Serveru pro prostředí SQL Serveru.

Popis úkolu Article
Pomocí Průzkumníka objektů můžete spravovat relace událostí. Správa relací událostí v Průzkumníku objektů
Popisuje, jak používat dostupné cíle rozšířených událostí (Extended Events). Cíle rozšířených událostí
Popisuje, jak zobrazit a aktualizovat cílová data. Zobrazení dat událostí v aplikaci SQL Server Management Studio
Popisuje architekturu relací Extended Events. Relace rozšířených událostí
Popisuje, jak používat nástroje Extended Events k vytváření a správě relací Extended Events. Nástroje rozšířených událostí
Popisuje, jak změnit relaci rozšířených událostí. Změňte relaci rozšířených událostí
Popisuje, jak získat informace o polích přidružených k událostem. Získání polí pro všechny události
Popisuje, jak zjistit, jaké události jsou k dispozici v registrovaných balíčcích. Dotazy SELECT a JOIN z systémových pohledů pro rozšířené události
Popisuje, jak zobrazit události a akce funkce Extended Events, které odpovídají každé události SQL Trace a jejím souvisejícím sloupcům. Zobrazte ekvivalenty funkce Extended Events pro třídy událostí nástroje SQL Trace
Popisuje, jak převést existující skript SQL Trace na relaci rozšířených událostí. Převod existujícího skriptu trasování SQL na relaci rozšířených událostí
Popisuje, jak zjistit, které dotazy zámek drží, plán dotazu a zásobník Transact-SQL v době, kdy byl zámek získán. Zjistěte, které dotazy drží zámky
Popisuje, jak identifikovat zdroj zámků. Vyhledání objektů, které mají na nich nejvíce zámků
Popisuje použití rozšířených událostí s trasováním událostí pro Windows k monitorování systémové aktivity. Monitorování systémové aktivity pomocí rozšířených událostí
Použití zobrazení katalogu a zobrazení dynamické správy (DMV) pro rozšířené události Dotazy SELECT a JOIN z systémových pohledů pro rozšířené události

Zobrazení katalogu rozšířených událostí

Rozšířené události poskytují několik katalogových zobrazení. Zobrazení katalogu poskytují informace o metadatech relace události nebo její metadata či definici. Informace o instancích aktivních relací událostí naleznete v tématu Zobrazení dynamické správy rozšířených událostí.

Název zobrazení katalogu Description
sys.database_event_session_actions Vrátí řádek pro každou akci pro každou událost relace událostí v oboru databáze.
sys.database_event_session_events Vrátí řádek pro každou událost v relaci událostí v oboru databáze.
sys.database_event_session_fields Vrátí řádek pro každý přizpůsobitelný sloupec, který byl explicitně nastaven na události a cíle relace v oboru databáze.
sys.database_event_session_targets Vrátí řádek pro každý cílový objekt události pro relaci událostí v rámci databáze.
sys.database_event_sessions Vrátí řádek pro každou relaci událostí v rámci databáze.

Zobrazení dynamické správy pro rozšířené události

Extended Events poskytuje několik zobrazení dynamické správy (DMV). Zobrazení dynamické správy vrací informace o aktivních (spuštěných) relacích událostí, jako jsou relace a cílové statistiky.

Název DMV Description
sys.dm_xe_database_session_event_actions Vrátí informace o akcích relací událostí v oboru databáze.
sys.dm_xe_database_session_events Vrátí informace o událostech relace událostí v oboru databáze.
sys.dm_xe_database_session_object_columns Zobrazuje hodnoty konfigurace pro objekty vázané na relaci s oborem databáze.
sys.dm_xe_database_session_targets Vrátí informace o cílech relace událostí v oboru databáze.
sys.dm_xe_database_sessions Vrátí řádek pro každou relaci událostí v oboru databáze spuštěnou v aktuální databázi.

Povolení

V Azure SQL Database, SQL databázi v Fabricu, Azure SQL Managed Instance a v SQL Serveru 2022 a novějších verzích podporují Rozšířené události podrobný model oprávnění. Můžete udělit následující oprávnění:

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

Informace o tom, co každý z těchto ovládacích prvků oprávnění řídí, naleznete v tématu CREATE EVENT SESSION, ALTER EVENT SESSIONa DROP EVENT SESSION.

Všechna tato oprávnění jsou součástí CONTROL oprávnění k databázi, spravované instanci SQL nebo instanci SQL Serveru. Ve službě Azure SQL Database vlastník databáze (dbo), členové db_owner databázové role a správci logického serveru uchovávají oprávnění k databázi CONTROL . Ve službě Azure SQL Managed Instance a na SQL Serveru členové sysadmin role serveru uchovávají CONTROL oprávnění k instanci.

Příklady kódu se můžou lišit pro Azure SQL Database, SQL databázi v Fabricu a SQL Managed Instance.

Některé ukázky kódu v jazyce Transact-SQL napsané pro SQL Server vyžadují drobné úpravy, aby je bylo možné spustit ve službě Azure SQL Database nebo v databázi SQL ve službě Fabric. Jedna kategorie takových příkladů kódu zahrnuje zobrazení katalogu, jejichž předpony názvů se liší v závislosti na typu databázového stroje:

  • server_ - předpona pro SQL Server a spravovanou instanci Azure SQL
  • database_ - předpona pro Azure SQL Database, databázi SQL v prostředcích infrastruktury a službu SQL Managed Instance

Azure SQL Database a SQL databáze ve službě Fabric podporují pouze relace událostí určené pro databáze. SQL Server Management Studio (SSMS) podporuje relace událostí omezené na databázi pro Azure SQL Database: V rámci každé databáze v Průzkumníku objektů se zobrazuje uzel rozšířených událostí, který obsahuje relace omezené na databázi.

Spravovaná instance Azure SQL podporuje relace s oborem databáze i relace s oborem serveru. SSMS plně podporuje relace s vymezeným serverem pro službu SQL Managed Instance: uzel Rozšířených událostí obsahující všechny relace s oborem serveru se zobrazí ve složce Správa pro každou spravovanou instanci v Průzkumníku objektů.

Poznámka:

Pro Azure SQL Managed Instance se doporučují relace událostí s rozsahem serveru.

Relace událostí v oboru databáze se nezobrazují v Průzkumníku objektů v SSMS pro spravovanou instanci Azure SQL. Ve spravované instanci SQL se relace událostí v oboru databáze dají dotazovat a spravovat pouze pomocí jazyka Transact-SQL.

Pro ilustraci následující tabulka uvádí a porovnává dvě podmnožiny zobrazení katalogu. Podmnožina má různé předpony názvů, protože podporují různé typy databázových strojů.

Název v SQL Serveru a azure SQL Managed Instance Název ve službě Azure SQL Database, SQL databáze ve službě Fabric a 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