1. Úvod
1.1 Co jsou SQL Server Rozšířené události?
SQL Server Extended Events je lehký systém pro monitorování výkonu, který umožňuje administrátorům a vývojářům shromažďovat a analyzovat podrobná data o aktivitě serveru. Tento systém je integrován do SQL Server Databázový engine a poskytuje komplexní přehled o běžném provozu i scénářích řešení problémů.
1.2 Proč používat rozšířené události pro monitorování?
SQL Server Rozšířené události nabízí několik přesvědčivých výhod pro monitorování databáze a řešení problémů:
- Minimální dopad na výkon díky odlehčené architektuře
- Podrobná kontrola nad sběrem dat a filtrováním událostí
- Přizpůsobitelný sběr dat přizpůsobený specifickým potřebám monitorování
- Schopnost zachytit události z více balíčků současně
- Flexibilní možnosti filtrování pro zaměření na relevantní operace
- Podpora monitorování produkčních systémů bez zhoršení uživatelského prostředí
- Komplexní sledování výkonnostních metrik
- Pokročilá diagnostikaostIC možnosti pro řešení problémů
- Údržba auditních záznamů pro shodu s požadavky
- Možnosti analýzy dat v reálném čase a historických dat
1.3 Rozšířené události vs. SQL Server profil
Zatímco SQL Server profil Dosud tradičním monitorovacím nástrojem byl MS SQL Extended Events efektivnější alternativou. Extended Events spotřebovává méně systémových prostředků a nabízí lepší škálovatelnost pro produkční prostředí.
SQL Server Profiler je nyní zastaralý a společnost Microsoft doporučuje migraci na rozšířené události pro všechny aktivity monitorování.
2. Pochopení architektury rozšířených událostí
2.1 Součásti enginu rozšířených událostí
Modul Extended Events se skládá z několika základních komponent, které spolupracují na zachycování, zpracování a ukládání dat o událostech. Pochopení těchto komponent vám pomůže navrhnout efektivní monitorovací řešení.
- Odesílatel: Komponenta dispečera koordinuje tok událostí ze zdrojů událostí do enginu Extended Events. Když se událost spustí, dispečer obdrží oznámení a směruje ho do aktivních relací, které se přihlásily k odběru daného typu události.
- Buffer: Tempo bufferůrarpřed zápisem do paměti uložit data událostí targets. Tento mechanismus ukládání do vyrovnávací paměti zlepšuje výkon snížením počtu I/O operací. Velikost vyrovnávací paměti a nastavení správy lze nakonfigurovat tak, aby se vyvážilo využití paměti s požadavky na sběr dat.
- Zasedání: Relace definuje rozsah monitorování událostí. Určuje, které události se mají zachytit, jaké akce se mají provést, které predikáty se mají použít a kam se mají výsledky ukládat. Relace lze vytvářet, upravovat,tara samostatně se zastavil.
- Tarzískat instanci: TarInstance get představují úložiště pro zachycená data událostí. Každá relace může zapisovat do jednoho nebo více tarzískává, jako například soubory, kruhové vyrovnávací paměti nebo čítače. Tarzískává proces a uchovává informace o události pro pozdější analýzu.
2.2 Balíčky akcí
SQL Server Rozšířené události organizují funkcionalitu do balíčků. Každý balíček obsahuje související události, akce, typy, predikáty a targets. Mezi běžné balíčky patří sqlserver, sqlos a package0.
- Balíček sqlserver poskytuje události specifické pro databázi, jako jsou dotazy a transakce.
- Balíček sqlos obsahuje události operačního systému.
- Balíček package0 nabízí univerzální funkce používané ve všech balíčcích.
2.3 Typy událostí a pole
Události představují výskyty v rámci SQL Server které chcete monitorovat. Každý typ události má předdefinovaná pole, která zachycují relevantní informace. Například událost sql_statement_completed obsahuje pole pro trvání, čas CPU, čtení a zápisy.
Události mohou být synchronní nebo asynchronní. Synchronní události se spouštějí během samotné operace, zatímco asynchronní události se spouštějí po jejím dokončení. Pochopení charakteristik událostí vám pomůže vybrat vhodné události pro vaše potřeby monitorování.
2.4 Akce
Akce přidávají doplněktarinformace o y k zachyceným událostem. Když dojde k události, provedou se související akce, které shromáždí další kontext, jako je text SQL, ID relace nebo informace o zásobníku volání.
Mezi běžné akce patří sql_text pro zachycení příkazů dotazu, database_name pro identifikaci databáze a client_h.ostnázev pro sledování původního serveru. Akce poskytují nezbytný kontext pro řešení problémů a analýzu.
2.5 Tardostane
Tarurčuje, jak a kde jsou uložena data událostí. SQL Server Rozšířené události podporují více tarzískat typy, včetně:
- event_file pro diskové úložiště, které poskytuje trvalé úložiště pro podrobnou analýzu
- ring_buffer pro uchovávání dat v paměti, který nabízí rychlý přístup k nedávným událostem s minimálními režijními náklady
- event_counter pro jednoduché počítání
- histogram pro seskupení
- párování párů pro korelaci souvisejících událostí
2.6 Predikáty (filtry)
Predikáty filtrují události na základě zadaných podmínek, čímž snižují objem zachycených dat. Můžete filtrovat podle názvu databáze, názvu aplikace, ID relace, prahových hodnot trvání nebo libovolné hodnoty pole události.
Efektivní použití predikátů minimalizuje dopad na výkon tím, že zachycuje pouze relevantní události. Složité predikáty kombinují více podmínek pomocí logických operátorů a vytvářejí tak přesná kritéria filtrování.
3. Stavy a životní cyklus relace rozšířené události
3.1 Stavy relace: CREATE, ALTER a DROP
Rozšířené relace událostí probíhají různými stavy:
- Příkaz CREATE EVENT SESSION definuje novou relaci, ale netarRelace existuje v zastaveném stavu, dokud není explicitně aktivována.
- Příkaz ALTER EVENT SESSION upravuje konfiguraci relace nebo mění její stav mezi zastavenou a zastavenou.tarted.
- Příkaz DROP EVENT SESSION zcela odstraní definici relace ze serveru.
3.2 Obsah a charakteristika lekce
Každá relace obsahuje kolekci událostí, akcí, targety a predikáty. Relace mají implicitní hranice, které definují jejich rozsah a chování. Možnosti konfigurace řídí alokaci paměti, uchovávání událostí a latenci odesílání.
Mezi charakteristiky relace patří, zda přetrvávají napříč serverovými respondenty.tarts, maximální alokace paměti a jak zvládají zátěž paměti. Tato nastavení významně ovlivňují chování relace a spotřebu zdrojů.
3.3 Hranice relací a balíčky
Hranice relací definují vztahy mezi událostmi, targets a balíčky. Události z jednoho balíčku mohou spustit akce z jiného balíčku, což poskytuje flexibilitu ve strategiích sběru dat.
Vztahy mezi balíčky umožňují kombinovat události z více zdrojů v rámci jedné relace. Tato funkce umožňuje komplexní scénáře monitorování, které zahrnují různé SQL Server subsystémy.
4. Vytváření rozšířených relací událostí pomocí SSMS
4.1 Předpoklady a nastavení
Před vytvořením SQL Server Pro relace s rozšířenými událostmi se ujistěte, že máte příslušná oprávnění. Pro relace s rozsahem serveru potřebujete oprávnění ALTER ANY EVENT SESSION nebo pro relace s rozsahem databáze oprávnění CONTROL k databázi.
Ověřte to SQL Server Management Studio je nainstalováno a připojeno k vašemu tarzískat instanci. Seznamte se s požadavky na monitorování a identifikujte, které události a tarnejlépe vyhovuje vašim potřebám.
4.2 Přístup k rozšířeným událostem v Průzkumníku objektů
Chcete-li v SSMS získat přístup k rozhraní rozšířených událostí, postupujte takto:
- Otevřená SQL Server Management Studio a připojte se k vašemu SQL Server instance.
- V Průzkumníku objektů rozbalte management -> Rozšířené události.
- Uzel Rozšířené události obsahuje Sessions a Balíčky složky pro správu konfigurací monitorování.
4.3 Vytvoření nové relace
Vytvoření nové relace:
-
- Klepněte pravým tlačítkem na Sessions složky pod Rozšířené události.
- vybrat Nová relace otevřete konfigurační dialog. Následující obsah použije tuto metodu k vytvoření nové relace.
Poznámka: Průvodce novou relací je k dispozici také pro více komentovaný zážitek.
4.3.1 Obecná konfigurace stránky
Na obecně stránku, nakonfigurujte základní vlastnosti relace:
- Zadejte název relace do Název relace pole. Používejte popisné názvy, které označují účel monitorování.
- Volitelně vyberte Starrelace události na serveru startrubice pro povolení automatické aktivace relace.
- Výchozí šablona relace je PrázdnýPokud používáte předdefinovanou konfiguraci, můžete použít i jiné šablony.
4.3.2 Nastavení stránky Události
Jedno Události Stránka umožňuje vybrat, které události chcete sledovat:
- Vybrat Události stránka zleva Vyberte stránku panel.
- v Knihovna událostírary, procházejte dostupné události nebo použijte funkci vyhledávání.
- Filtrujte události zadáním klíčových slov, jako například „sql_statement_completed“, a vyhledejte relevantní události.
- Vyberte požadovanou událost, například sql_statement_completed.
- Kliknutím na tlačítko se šipkou doprava přesunete událost do Vybrané události seznam.
4.3.3 Konfigurace úložiště dat
Jedno Data Storage stránka definuje, kam se ukládají data událostí:
- Vybrat Data Storage stránka zleva Vyberte stránku panel.
- v Tardostane oblast, vyberte si tarzískat typ z rozbalovací nabídky.
(1) soubor_událostí Tarzískat
Soubor_event_file tarukládání dat do souborů na disk s příponou .xel:
- vybrat soubor_událostí z tarzískat rozbalovací nabídku typu.
- Zadejte cestu k souboru, například C:\temp\VašeRelace_Target.xel.
- Nakonfigurujte možnosti přepnutí kurzoru pro správu místa na disku nastavením maximální velikosti a počtu souborů.
- Jedno tarFunkce get zapisuje události nepřetržitě, dokud se relace neukončí nebo dokud nejsou dosaženy limity úložiště.
(2) vyrovnávací paměť ring_buffer Tarzískat
Ring_buffer target ukládá události do paměti pro rychlý přístup bez nutnosti diskového I/O:
- vybrat vyrovnávací paměť ring_buffer jako tarzískat typ.
- Nakonfigurujte maximální alokaci paměti pro vyrovnávací paměť.
- Uvědomte si, že starší události se při naplnění vyrovnávací paměti zahodí, což je vhodné pro monitorování nedávné aktivity.
(3) počítadlo_událostí Tarzískat
Čítač_event_counter tarFunkce get jednoduše počítá výskyty událostí bez ukládání podrobných dat. To poskytuje minimální režijní náklady, když potřebujete pouze informace o frekvenci.
(4) histogram Tarzískat
Histogram tarFunkce get seskupuje události podle zadané hodnoty pole a vytváří tak statistiky distribuce. To je užitečné pro identifikaci běžných vzorců nebo hodnot s vysokou frekvencí.
(5) párování Tarzískat
Párování_párů tarzískat korelace souvisejících událostí, jako je získání a uvolnění zámku. To umožňuje analýzu párových operací a jejich časových vztahů.
4.3.4 Pokročilá nastavení
Jedno pokročilý stránka nabízí možnosti konfigurace na úrovni relace:
- Vybrat pokročilý stránka zleva Vyberte stránku panel.
- Konfigurace Režim uchování událostí pro řízení zpracování událostí pod tlakem paměti.
- sada Maximální latence odeslání vyvážit zpracování v reálném čase s výkonem systému.
- Konfigurace Maximální velikost paměti a Maximální velikost události na základě vašich požadavků na monitorování.
- vybrat Režim oddílů paměti optimalizovat pro prostředí s jedním nebo více procesory.
4.4 Konfigurace filtrů událostí (predikátů)
Predikáty snižují objem dat filtrováním událostí na základě specifických kritérií. Konfigurace filtrů:
- Na Události vyberte událost, kterou chcete filtrovat, například „sql_statement_completed“.
- klikněte Konfigurace otevřete dialogové okno pro konfiguraci události.
- Vybrat Filtr (predikát) Karta.
- v Pole V rozbalovací nabídce vyberte pole, podle kterého chcete filtrovat, například dobu trvání.
- Vyberte položku Operátor, například „>“.
- Zadejte filtr Hodnota, například 1000000 (1 sekunda).
- V případě potřeby přidejte další podmínky.
4.5 Výběr akcí a polí událostí
Pro každou událost si můžete vybrat data, která se mají shromažďovat:
- Na Události vyberte událost, pro kterou chcete vybrat data, například „sql_statement_completed“.
- klikněte Konfigurace otevřete dialogové okno pro konfiguraci události.
- Vybrat Globální pole (akce) Karta.
- Vyberte akce pro přidání doplňkutarinformace, například název_database nebo název_client_app.
- Recenze Pole událostí a zjistěte, která pole se automaticky zaznamenávají.
- Vymažte všechna nepotřebná pole, abyste snížili objem dat.
S 4.6tarSpráva a vedení relací
Po konfiguraci relace můžetetara monitorujte jeho provoz:
- klikněte OK k vytvoření relace.
- V Průzkumníku objektů rozbalte Sessions složku, kde najdete svou novou relaci.
- Klikněte pravým tlačítkem myši na název relace a vyberte Start Sezení začít zaznamenávat události.
- Chcete-li zobrazit živá data, klikněte pravým tlačítkem myši na relaci a vyberte Sledujte živá data.
- Ukončete relaci kliknutím pravým tlačítkem myši a výběrem Ukončit relaci.
5. Vytváření rozšířených relací událostí pomocí T-SQL
5.1 Syntaxe příkazu VYTVOŘIT UDÁLOST/RELACI
Vytváření relací rozšířených událostí pomocí T-SQL poskytuje přesnou kontrolu a umožňuje skriptování pro automatizované nasazení. Příkaz CREATE EVENT SESSION se řídí specifickou syntaktickou strukturou.
Základní syntaxe zahrnuje název relace, klauzule ADD EVENT pro každou událost, ADD TARKlauzule GET pro cílové úložiště a volitelné klauzule WITH pro konfiguraci relace.
5.2 Vytvoření základní relace události
Základní relace monitoruje specifické události a zapisuje výsledky do tarzískat. Zde je návod, jak sestavit základní komponenty.
5.2.1 Definování názvu a možností relace
Starvytvořením relace s popisným názvem:
CREATE EVENT SESSION [SampleSession] ON SERVER
Klauzule ON SERVER vytváří relaci s rozsahem serveru, která přetrvává i při změnách databáze. Pro Azure SQL Database použijte pro relace s rozsahem databáze klauzuli ON DATABASE.
5.2.2 Přidávání událostí pomocí příkazu PŘIDAT UDÁLOST
Přidejte události k zachycení pomocí klauzule ADD EVENT:
CREATE EVENT SESSION [SampleSession] ON SERVER ADD EVENT sqlserver.sql_statement_completed
Toto zachytí všechny dokončené příkazy SQL. Více událostí můžete přidat přidáním dalších klauzulí ADD EVENT.
5.2.3 Konfigurace akcí událostí
Akce shromažďují další kontext pro každou událost. Akce přidejte do závorek za názvem události:
CREATE EVENT SESSION [SampleSession] ON SERVER
ADD EVENT sqlserver.sql_statement_completed(
ACTION(sqlserver.sql_text, sqlserver.database_name, sqlserver.username)
)
Tento příklad zachycuje text SQL, název databáze a uživatelské jméno pro každý dokončený příkaz.
5.2.4 Nastavení predikátů událostí (klauzule WHERE)
Predikáty filtrují události pro snížení objemu dat. Použijte klauzuli WHERE v definici události:
CREATE EVENT SESSION [SampleSession] ON SERVER
ADD EVENT sqlserver.sql_statement_completed(
ACTION(sqlserver.sql_text)
WHERE ([package0].[greater_than_uint64]([duration],(5000000)))
)
Toto filtruje příkazy s dobou trvání delší než 5 sekund (5 000 000 mikrosekund).
5.3 Přidání události Tardostane
Tardefinuje, kde jsou uložena data událostí a jak jsou zpracovávána.
5.3.1 PŘIDAT TARSyntaxe GET
přidat tarpoužívá ADD TARKlauzule GET po definování všech událostí:
ADD TARGET package0.event_file(
SET filename=N'C:\XEvents\SampleSession.xel'
)
Předpona package0 označuje target pochází ze základního balíčku.
5.3.2 Konfigurace Tarzískat parametry
Každý tarTyp get přijímá specifické parametry. Pro event_file nakonfigurujte filename, max_file_size a max_rollover_files:
ADD TARGET package0.event_file(
SET filename=N'C:\XEvents\SampleSession.xel',
max_file_size=(50),
max_rollover_files=(5)
)
Tato konfigurace vytváří soubory o velikosti až 50 MB a při přechodu mezi soubory zůstane až 5.
5.4 Možnosti a nastavení relace
Klauzule WITH konfiguruje možnosti na úrovni relace, které řídí chování a využití zdrojů.
5.4.1 MAX_MEMORY a EVENT_RETENTION_MODE
Řízení alokace paměti a zpracování událostí pod tlakem:
WITH (
MAX_MEMORY=4096 KB,
EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS
)
Možnosti EVENT_RETENTION_MODE zahrnují ALLOW_SINGLE_EVENT_LOSS pro minimální využití paměti, ALLOW_MULTIPLE_EVENT_LOSS pro mírné režijní náklady a NO_EVENT_LOSS pro úplné uchování dat na úrovni c.ost potenciálního dopadu na výkon.
5.4.2 MAX_DISPATCH_LATENCY
Nastavte maximální dobu, po kterou mohou události zůstat ve vyrovnávacích pamětech, než budou do nich zapsány. tardostane:
WITH (
MAX_DISPATCH_LATENCY=30 SECONDS
)
Nižší hodnoty poskytují více dat v reálném čase v okamžiku cost zvýšených I/O operací.
5.4.3 REŽIM_PAMĚŤOVÉ_DÍLKY
Optimalizujte rozdělení paměti pro vaši hardwarovou konfiguraci:
WITH (
MEMORY_PARTITION_MODE=PER_CPU
)
Možnosti zahrnují NONE pro jeden oddíl, PER_NODE pro systémy NUMA a PER_CPU pro maximální souběžnost na systémech s více procesory.
S 5.5tarZastavení, ukončení a změna relací
Spravujte stav a konfiguraci relace pomocí příkazů ALTER EVENT SESSION.
5.5.1 ZMĚNA UDÁLOSTI SESSION pro Start/Stop
Starrelace po vytvoření:
ALTER EVENT SESSION [SampleSession] ON SERVER STATE = START;
Zastavení běžící relace:
ALTER EVENT SESSION [SampleSession] ON SERVER STATE = STOP;
5.5.2 Úprava existujících relací
Upravte konfiguraci relace během zastavení. Přidejte události:
ALTER EVENT SESSION [SampleSession] ON SERVER ADD EVENT sqlserver.sql_batch_completed;
Odebrat události:
ALTER EVENT SESSION [SampleSession] ON SERVER DROP EVENT sqlserver.sql_statement_completed;
5.5.3 Zrušení relací událostí
Úplně odstraňte relaci pomocí příkazu DROP EVENT SESSION:
DROP EVENT SESSION [SampleSession] ON SERVER;
Před ukončením je nutné relaci zastavit.
6. Práce s událostí Tardostane se do detailů
6.1 soubor_události Tarzískat konfiguraci
Soubor_event_file tarFunkce get poskytuje trvalé úložiště pro data událostí s flexibilními možnostmi konfigurace.
6.1.1 Cesta k souborům a konvence pojmenování
Zadejte úplnou cestu a název souboru pro soubory událostí:
ADD TARGET package0.event_file(
SET filename=N'C:\XEvents\MySession.xel'
)
Pro rozšířené soubory protokolu událostí použijte příponu .xel. Ujistěte se, že SQL Server Servisní účet má oprávnění k zápisu do zadaného adresáře.
6.1.2 Přechod mezi soubory a správa jejich velikosti
Konfigurace automatického přepínání souborů pro správu místa na disku:
ADD TARGET package0.event_file(
SET filename=N'C:\XEvents\MySession.xel',
max_file_size=(50),
max_rollover_files=(10)
)
Když soubor dosáhne velikosti 50 MB, SQL Server Rozšířené události vytvoří nový soubor s příponou o jednu hodnotu vyšší. Po dosažení 10 souborů se nejstarší soubor přepíše.
6.1.3 Čtení dat souboru událostí
Dotazování dat souboru událostí pomocí sys.fn_xe_file_tarFunkce get_read_file:
SELECT
event_data,
file_name,
file_offset
FROM sys.fn_xe_file_target_read_file(
'C:\XEvents\MySession*.xel',
NULL, NULL, NULL
);
Vzor zástupného znaku čte všechny soubory spojené s relací.
6.2 ring_buffer Tarzískat využití
Ring_buffer tarUkládá události do paměti pro rychlý přístup k nedávné aktivitě.
6.2.1 Ukládání událostí do paměti
Konfigurace ring_buffer pro úložiště založené na paměti:
ADD TARGET package0.ring_buffer
Události zůstávají přístupné pouze během aktivní relace a SQL Server běží. Data jsou lost když se relace zastaví nebo server restarts.
6.2.2 Velikost a konfigurace vyrovnávací paměti
Řízení alokace paměti pro kruhovou vyrovnávací paměť:
ADD TARGET package0.ring_buffer(
SET max_memory=(4096)
)
Zadejte paměť v KB. Po zaplnění vyrovnávací paměti se starší události zahodí pomocí metody FIFO.
6.2.3 Dotazování dat z kruhové vyrovnávací paměti
Přístup k datům vyrovnávací paměti kruhu prostřednictvím DMV:
SELECT
CAST(target_data AS XML) AS TargetData
FROM sys.dm_xe_session_targets AS t
JOIN sys.dm_xe_sessions AS s
ON s.address = t.event_session_address
WHERE s.name = 'YourSessionName'
AND t.target_name = 'ring_buffer';
Jedno tarFunkce get_data obsahuje informace o událostech ve formátu XML.
6.3 počítadlo_eventů Tarzískat
Čítač_event_counter target nabízí jednoduché počítání bez podrobného ukládání dat:
ADD TARGET package0.event_counter
Toto tarSledování frekvence událostí s minimálními režijními náklady, užitečné pro monitorování velkého objemu, kde záleží pouze na počtu.
6.4 histogram Tarzískat
Histogram tarseskupení událostí podle hodnot polí:
ADD TARGET package0.histogram(
SET filtering_event_name=N'sqlserver.sql_statement_completed',
source_type=0,
source=N'database_name'
)
Tato konfigurace vytvoří histogram znázorňující rozložení událostí napříč databázemi.
6.5 párování Tarzískat
Párování_párů tarzískat koreluje související události, jako je získání zámků s jejich vydáními:
ADD TARGET package0.pair_matching(
SET begin_event=N'sqlserver.lock_acquired',
end_event=N'sqlserver.lock_released',
begin_matching_columns=N'resource_type',
end_matching_columns=N'resource_type'
)
To umožňuje analýzu párových operací a jejich trvání.
7. Zobrazení a analýza dat rozšířených událostí
7.1 Použití SSMS k zobrazení živých dat
SQL Server Management Studio poskytuje grafické rozhraní pro zobrazení dat rozšířených událostí v reálném čase:
- V Průzkumníku objektů rozbalte management -> Rozšířené události -> Sessions.
- Klikněte pravým tlačítkem myši na aktivní relaci.
- vybrat Sledujte živá data otevřete prohlížeč živých dat.
- Události se v mřížce zobrazují tak, jak k nim dochází.
- Kliknutím na jednotlivé události zobrazíte podrobné hodnoty polí v podokně s podrobnostmi.
- Pomocí filtrů na panelu nástrojů se můžete zaměřit na konkrétní typy událostí nebo hodnoty polí.
7.2 Dotazování dat souboru událostí pomocí T-SQL
Dotazy T-SQL poskytují flexibilní analýzu zachycených dat událostí.
7.2.1 sys.fn_xe_file_tarFunkce get_read_file
Čtení dat souboru událostí pomocí této systémové funkce:
SELECT
object_name AS EventName,
CAST(event_data AS XML) AS EventData,
file_name,
file_offset,
timestamp_utc
FROM sys.fn_xe_file_target_read_file(
'C:\XEvents\MySession*.xel',
NULL, NULL, NULL
);
Funkce vrací jeden řádek na událost s podrobnostmi ve formátu XML.
7.2.2 Analýza dat událostí XML
Extrahujte konkrétní hodnoty z dat událostí XML:
SELECT
event_data.value('(event/@name)[1]', 'VARCHAR(50)') AS EventName,
event_data.value('(event/@timestamp)[1]', 'DATETIME2') AS Timestamp,
event_data.value('(event/data[@name="duration"]/value)[1]', 'BIGINT') AS Duration,
event_data.value('(event/data[@name="statement"]/value)[1]', 'VARCHAR(MAX)') AS Statement
FROM (
SELECT CAST(event_data AS XML) AS event_data
FROM sys.fn_xe_file_target_read_file(
'C:\XEvents\MySession*.xel',
NULL, NULL, NULL
)
) AS EventData;
Výrazy XQuery extrahují hodnoty jednotlivých polí ze struktury XML.
7.2.3 Převod dat událostí do tabulek
Vytvořte strukturované sady výsledků z dat událostí:
WITH EventData AS (
SELECT CAST(event_data AS XML) AS EventXML
FROM sys.fn_xe_file_target_read_file(
'C:\XEvents\MySession*.xel',
NULL, NULL, NULL
)
)
SELECT
EventXML.value('(event/@name)[1]', 'VARCHAR(100)') AS EventName,
EventXML.value('(event/data[@name="cpu_time"]/value)[1]', 'BIGINT') AS CPUTime,
EventXML.value('(event/data[@name="physical_reads"]/value)[1]', 'BIGINT') AS PhysicalReads,
EventXML.value('(event/action[@name="sql_text"]/value)[1]', 'VARCHAR(MAX)') AS SQLText,
EventXML.value('(event/action[@name="database_name"]/value)[1]', 'VARCHAR(128)') AS DatabaseName
FROM EventData;
7.3 Dotazování dat z kruhové vyrovnávací paměti
Extrahování dat z ring_bufferu tardostane:
SELECT
n.value('(@name)[1]', 'VARCHAR(50)') AS EventName,
n.value('(@timestamp)[1]', 'DATETIME2') AS Timestamp,
n.value('(data[@name="duration"]/value)[1]', 'BIGINT') AS Duration,
n.value('(action[@name="sql_text"]/value)[1]', 'VARCHAR(MAX)') AS SQLText
FROM (
SELECT CAST(target_data AS XML) AS TargetData
FROM sys.dm_xe_session_targets AS t
JOIN sys.dm_xe_sessions AS s
ON s.address = t.event_session_address
WHERE s.name = 'YourSessionName'
AND t.target_name = 'ring_buffer'
) AS Data
CROSS APPLY TargetData.nodes('//event') AS q(n);
7.4 Systémové pohledy pro rozšířené události
SQL Server nabízí několik zobrazení DMV a katalogu pro správu a monitorování relací rozšířených událostí.
7.4.1 sys.server_event_sessions
Zobrazit definice relací uložené na serveru:
SELECT
name,
event_retention_mode_desc,
max_dispatch_latency,
max_memory,
max_event_size,
memory_partition_mode_desc
FROM sys.server_event_sessions;
Toto zobrazení katalogu zobrazuje podrobnosti konfigurace pro všechny definované relace.
7.4.2 sys.dm_xe_sessions
Zobrazit aktuálně aktivní relace:
SELECT
name,
create_time,
total_regular_buffers,
regular_buffer_size,
total_large_buffers,
large_buffer_size
FROM sys.dm_xe_sessions;
Toto DMV poskytuje informace za běhu o aktivních relacích rozšířených událostí.
7.4.3 sys.dm_xe_session_tardostane
Zobrazit tarse přiřazuje k aktivním relacím:
SELECT
s.name AS SessionName,
t.target_name,
t.execution_count,
t.execution_duration_ms
FROM sys.dm_xe_session_targets AS t
JOIN sys.dm_xe_sessions AS s
ON s.address = t.event_session_address;
7.4.4 Další užitečné informace o DMV
Další zobrazení poskytují komplexní informace o relaci:
- sys.dm_xe_session_events: Vypíše události v aktivních relacích
- sys.dm_xe_session_event_actions: Zobrazuje akce nakonfigurované pro události relace.
- sys.dm_xe_objects: Kataloguje všechny dostupné události, akce a tardostane
- sys.dm_xe_object_columns: Pole s podrobnostmi dostupná pro každý typ události
- sys.dm_xe_packages: Vypíše všechny balíčky rozšířených událostí
8. Praktické případy použití a příklady
8.1 Monitorování provádění SQL příkazů
Sledování provádění příkazů SQL poskytuje přehled o vzorcích dotazů a výkonnostních charakteristikách.
8.1.1 Sledování událostí sql_statement_completed
Vytvořte relaci pro sledování dokončených SQL příkazů:
CREATE EVENT SESSION [QueryMonitoring] ON SERVER
ADD EVENT sqlserver.sql_statement_completed(
ACTION(
sqlserver.sql_text,
sqlserver.database_name,
sqlserver.client_hostname,
sqlserver.username
)
)
ADD TARGET package0.event_file(
SET filename=N'C:\XEvents\QueryMonitoring.xel',
max_file_size=(100),
max_rollover_files=(5)
)
WITH (
MAX_MEMORY=4096 KB,
EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,
MAX_DISPATCH_LATENCY=30 SECONDS,
STARTUP_STATE=OFF
);
ALTER EVENT SESSION [QueryMonitoring] ON SERVER STATE = START;
8.1.2 Filtrování podle databáze nebo aplikace
Zaměřte se na konkrétní databáze nebo aplikace pomocí predikátů:
CREATE EVENT SESSION [AppSpecificMonitoring] ON SERVER
ADD EVENT sqlserver.sql_statement_completed(
ACTION(sqlserver.sql_text, sqlserver.client_app_name)
WHERE (
[sqlserver].[database_name] = N'YourDatabase'
AND [sqlserver].[client_app_name] LIKE N'YourApplication%'
)
)
ADD TARGET package0.event_file(
SET filename=N'C:\XEvents\AppMonitoring.xel'
);
8.2 Zachycení informací o deadlocku
Analýza deadlocku vyžaduje zachycení podrobných informací o konfliktních transakcích.
8.2.1 Událost xml_deadlock_report
Vytvořte relaci pro zachycení kompletních grafů deadlocků:
CREATE EVENT SESSION [DeadlockMonitoring] ON SERVER
ADD EVENT sqlserver.xml_deadlock_report(
ACTION(
sqlserver.database_name,
sqlserver.sql_text
)
)
ADD TARGET package0.event_file(
SET filename=N'C:\XEvents\Deadlocks.xel'
)
WITH (STARTUP_STATE=ON);
ALTER EVENT SESSION [DeadlockMonitoring] ON SERVER STATE = START;
8.2.2 Analýza grafů deadlocků
Extrahování a analýza informací o deadlocku:
SELECT
EventXML.value('(event/@timestamp)[1]', 'DATETIME2') AS DeadlockTime,
EventXML.query('.') AS DeadlockGraph
FROM (
SELECT CAST(event_data AS XML) AS EventXML
FROM sys.fn_xe_file_target_read_file(
'C:\XEvents\Deadlocks*.xel',
NULL, NULL, NULL
)
) AS EventData
WHERE EventXML.value('(event/@name)[1]', 'VARCHAR(50)') = 'xml_deadlock_report';
Graf deadlocku obsahuje podrobnosti o procesech, zdrojích a výběru obětí.
8.3 Problémy s výkonem sledovacích dotazů
Identifikujte dotazy s nízkým výkonem pomocí metrik trvání a spotřeby zdrojů.
8.3.1 Detekce dlouhodobě běžících dotazů
Zachycení dotazů překračujících určité prahové hodnoty trvání:
CREATE EVENT SESSION [LongRunningQueries] ON SERVER
ADD EVENT sqlserver.sql_statement_completed(
ACTION(
sqlserver.sql_text,
sqlserver.database_name,
sqlserver.plan_handle
)
WHERE ([duration] > 5000000) -- 5 seconds in microseconds
)
ADD TARGET package0.event_file(
SET filename=N'C:\XEvents\LongQueries.xel'
);
8.3.2 Analýza realizačního plánu
Zachycení plánů dotazů pro analýzu výkonu:
CREATE EVENT SESSION [QueryPlans] ON SERVER
ADD EVENT sqlserver.query_post_execution_showplan(
ACTION(
sqlserver.sql_text,
sqlserver.database_name
)
WHERE ([duration] > 10000000) -- 10 seconds
)
ADD TARGET package0.event_file(
SET filename=N'C:\XEvents\QueryPlans.xel',
max_file_size=(200)
);
8.4 Monitorování událostí přihlášení a zabezpečení
Sledujte aktivity ověřování a autorizace pro účely bezpečnostního auditu.
8.4.1 Sledování úspěšného a neúspěšného přihlášení
Sledujte úspěšné i neúspěšné pokusy o přihlášení:
CREATE EVENT SESSION [LoginMonitoring] ON SERVER
ADD EVENT sqlserver.login(
ACTION(
sqlserver.client_hostname,
sqlserver.client_app_name
)
),
ADD EVENT sqlserver.login_failed(
ACTION(
sqlserver.client_hostname
)
)
ADD TARGET package0.event_file(
SET filename=N'C:\XEvents\Logins.xel'
)
WITH (STARTUP_STATE=ON);
8.4.2 Změny oprávnění
Sledování úprav bezpečnostních oprávnění:
CREATE EVENT SESSION [SecurityChanges] ON SERVER
ADD EVENT sqlserver.server_principal_management_event,
ADD EVENT sqlserver.database_principal_management_event,
ADD EVENT sqlserver.database_permission_change_event
ADD TARGET package0.event_file(
SET filename=N'C:\XEvents\SecurityAudit.xel'
);
8.5 Monitorování na úrovni databáze
Monitorujte operace a změny stavu specifické pro databázi.
8.5.1 Události zálohování a obnovy
Sledování operací zálohování a obnovy:
CREATE EVENT SESSION [BackupMonitoring] ON SERVER
ADD EVENT sqlserver.backup_restore_progress_trace,
ADD EVENT sqlserver.databases_backup_restore_event
ADD TARGET package0.event_file(
SET filename=N'C:\XEvents\BackupRestore.xel'
);
8.5.2 Změny stavu databáze
Monitorování přechodů stavů databáze:
CREATE EVENT SESSION [DatabaseStateChanges] ON SERVER ADD EVENT sqlserver.database_started, ADD EVENT sqlserver.database_stopped ADD TARGET package0.ring_buffer;
8.6 Detekce poškození databáze a problémů s integritou
SQL Server Rozšířené události poskytují funkce včasného varování pro detekci potenciálního poškození databáze, což umožňuje proaktivní zásah dříve, než se problémy vyhrotí.
8.6.1 Klíčové události pro odhalování korupce
Několik událostí signalizuje potenciální poškození nebo problémy s I/O.
8.6.1.1 error_reported Událost pro kritické chyby
Událost error_reported zachycuje všechny SQL Server chyby, včetně čísel chyb souvisejících s poškozením:
ADD EVENT sqlserver.error_reported(
WHERE (
[severity] >= (20)
OR [error_number] IN (823, 824, 825, 832, 855, 856)
)
)
Chyba 823 indikuje chyby I/O, 824 signalizuje chyby logické konzistence a 825 hlásí úspěšné pokusy o čtení a opakované pokusy, které mohou naznačovat problémy s hardwarem.
8.6.1.2 Událost database_suspect_data_page
Tato událost se spustí, když SQL Server narazí na podezřelou stránku:
ADD EVENT sqlserver.database_suspect_data_page
Podezřelé stránky označují potenciální poškození a jsou zaznamenány v tabulce msdb.dbo.suspect_pages.
8.6.1.3 errorlog_written Událost
Zachycení položek zapsaných do SQL Server protokol chyb:
ADD EVENT sqlserver.errorlog_written(
WHERE ([severity] >= (16))
)
8.6.2 Vytvoření relace monitorování korupce
Zřídit komplexní schůzku pro odhalování a monitorování korupce.
8.6.2.1 Filtrování čísel chyb poškození (823, 824, 825)
Vytvořit tarsetkání zaměřené na ukazatele korupce:
CREATE EVENT SESSION [CorruptionDetection] ON SERVER
ADD EVENT sqlserver.error_reported(
ACTION(
sqlserver.database_name,
sqlserver.sql_text
)
WHERE (
[error_number] IN (823, 824, 825, 832, 855, 856)
OR [severity] >= (20)
)
),
ADD EVENT sqlserver.database_suspect_data_page(
ACTION(
sqlserver.database_name
)
)
8.6.2.2 Nastavení vhodných úrovní závažnosti
Zahrnout chyby s vysokou závažností, které mohou naznačovat poškození:
WHERE (
[severity] >= (20)
OR [error_number] IN (823, 824, 825)
)
Závažnost 20 a vyšší označuje problémy na úrovni systému, které často souvisejí s korupcí.
8.6.2.3 Konfigurace souboru událostí Tardostávat upozornění
Ukládání událostí poškození pro analýzu a upozornění:
ADD TARGET package0.event_file(
SET filename=N'C:\XEvents\CorruptionMonitoring.xel',
max_file_size=(50),
max_rollover_files=(10)
)
WITH (
STARTUP_STATE=ON,
MAX_DISPATCH_LATENCY=5 SECONDS
);
ALTER EVENT SESSION [CorruptionDetection] ON SERVER STATE = START;
8.6.3 Analýza dat o korupčních událostech
Extrahovat a interpretovat události související s korupcí ze zachycených dat.
8.6.3.1 Identifikace podezřelých stránek
Dotaz na události database_suspect_data_page:
SELECT
EventXML.value('(event/@timestamp)[1]', 'DATETIME2') AS EventTime,
EventXML.value('(event/data[@name="database_id"]/value)[1]', 'INT') AS DatabaseID,
EventXML.value('(event/data[@name="file_id"]/value)[1]', 'INT') AS FileID,
EventXML.value('(event/data[@name="page_id"]/value)[1]', 'BIGINT') AS PageID,
EventXML.value('(event/action[@name="database_name"]/value)[1]', 'VARCHAR(128)') AS DatabaseName
FROM (
SELECT CAST(event_data AS XML) AS EventXML
FROM sys.fn_xe_file_target_read_file(
'C:\XEvents\CorruptionMonitoring*.xel',
NULL, NULL, NULL
)
) AS EventData
WHERE EventXML.value('(event/@name)[1]', 'VARCHAR(50)') = 'database_suspect_data_page';
8.6.3.2 Extrakce podrobností o chybě a kontextu
Analyzujte události hlášené chybami a zjistěte, zda se jedná o vzorce poškození:
SELECT
EventXML.value('(event/@timestamp)[1]', 'DATETIME2') AS ErrorTime,
EventXML.value('(event/data[@name="error_number"]/value)[1]', 'INT') AS ErrorNumber,
EventXML.value('(event/data[@name="severity"]/value)[1]', 'INT') AS Severity,
EventXML.value('(event/data[@name="message"]/value)[1]', 'VARCHAR(MAX)') AS ErrorMessage,
EventXML.value('(event/action[@name="database_name"]/value)[1]', 'VARCHAR(128)') AS DatabaseName,
EventXML.value('(event/action[@name="sql_text"]/value)[1]', 'VARCHAR(MAX)') AS SQLText
FROM (
SELECT CAST(event_data AS XML) AS EventXML
FROM sys.fn_xe_file_target_read_file(
'C:\XEvents\CorruptionMonitoring*.xel',
NULL, NULL, NULL
)
) AS EventData
WHERE EventXML.value('(event/@name)[1]', 'VARCHAR(50)') = 'error_reported'
AND EventXML.value('(event/data[@name="error_number"]/value)[1]', 'INT') IN (823, 824, 825);
8.6.4 Integrace s DBCC CHECKDB
Použijte data z rozšířených událostí jako vodítko DBCC CHECKDB provedení.
8.6.4.1 Spouštění DBCC CHECKDB na základě událostí
Pokud jsou zjištěny události poškození, spusťte příkaz DBCC CHECKDB pro komplexní ověření:
-- After detecting corruption events, run DBCC CHECKDB
DBCC CHECKDB ('YourDatabaseName') WITH NO_INFOMSGS, ALL_ERRORMSGS;
Rozšířené události poskytují včasné varování, zatímco DBCC CHECKDB provádí důkladné ověření.
8.6.4.2 Automatizované pracovní postupy pro reakci na korupci
Implementujte automatické odpovědi monitorováním souboru událostí:
- Konfigurace SQL Server Úloha agenta pro pravidelné dotazování souboru událostí monitorování poškození.
- Pokud jsou nalezeny události poškození, spusťte v postižené databázi příkaz DBCC CHECKDB.
- Odesílejte e-mailová upozornění správcům databází s podrobnostmi o událostech a výsledky DBCC CHECKDB.
- Zaznamenávejte zjištění do centralizované monitorovací tabulky pro analýzu trendů.
8.6.4.3 Vyvažování proaktivního monitorování s výkonem
Rozšířené události nabízejí detekci poškození s nízkými režijními náklady ve srovnání s častým prováděním DBCC CHECKDB:
- Nepřetržitě spouštět rozšířené události pro detekci poškození v reálném čase
- Spustit DBCC CHECKDB pouze tehdy, když se objeví indikátory poškození.
- Naplánujte pravidelné DBCC CHECKDB během údržbových intervalů.
- Použití rozšířených událostí k identifikaci databází vyžadujících okamžitou pozornost
Tento přístup umožňuje proaktivní monitorování bez významné spotřeby zdrojů způsobené neustálými kontrolami integrity.
8.6.4.4 Oprava poškozené databáze
Pokud jsou v databázi zjištěny drobné poškození, můžete použít příkaz DBCC CHECKDB k opravě drobných poškození. Pokud selže, můžete zkusit nástroj třetí strany. Nástroj pro obnovu databáze SQL, který obecně nabízí vyšší míru obnovy u silně poškozených databází.
9. Rozšířené události s rozsahem serveru vs. události s rozsahem databáze
9.1 Relace událostí v rozsahu serveru
Relace v rozsahu serveru monitorují aktivitu v celém SQL Server instance. Tyto relace se vytvářejí pomocí klauzule ON SERVER a přetrvávají v hlavní databázi.
CREATE EVENT SESSION [ServerWideMonitoring] ON SERVER
ADD EVENT sqlserver.sql_statement_completed
ADD TARGET package0.event_file(
SET filename=N'C:\XEvents\ServerWide.xel'
);
Relace s rozsahem serveru zachycují události ze všech databází a jsou vhodné pro monitorování na úrovni instance.
9.2 Relace událostí s rozsahem databáze (databáze Azure SQL)
Relace s rozsahem databáze jsou omezeny na jednu databázi a primárně se používají v Azure SQL Database, kde je přístup na úrovni serveru omezen:
CREATE EVENT SESSION [DatabaseSpecificMonitoring] ON DATABASE
ADD EVENT sqlserver.sql_statement_completed
ADD TARGET package0.event_file(
SET filename=N'DatabaseMonitoring.xel'
);
V Azure SQL Database jsou soubory událostí uloženy v úložišti Azure Blob Storage, nikoli v lokálních souborových systémech.
9.3 Rozdíly a případy použití
Relace s rozsahem serveru poskytují komplexní monitorování napříč všemi databázemi, ale vyžadují zvýšená oprávnění. Relace s rozsahem databáze nabízejí izolaci a jsou vhodné při monitorování konkrétních aplikací nebo klientů.
Relace s rozsahem serveru používejte pro centralizované monitorování, řešení problémů s výkonem napříč databázemi a audit zabezpečení. Relace s rozsahem databáze používejte v Azure SQL Database, v prostředích s více klienty nebo při delegování odpovědností za monitorování na aplikační týmy.
10. Rozšířené události v databázi Azure SQL
10.1 Aspekty specifické pro Azure
Databáze Azure SQL implementuje rozšířené události s určitými rozdíly oproti místním systémům. SQL ServerRelace jsou ve výchozím nastavení omezeny na databázi a úložiště souborů událostí používá Azure Blob Storage místo lokálních souborových systémů.
Ověřování do služby Azure Blob Storage vyžaduje token SAS nakonfigurovaný v souboru událostí. tarzískat. Připojovací řetězce odkazují na účet úložiště a kontejner, kde jsou uloženy soubory událostí.
10.2 k dispozici Tardostane se do Azure
Databáze Azure SQL podporuje tyto rozšířené události tardostane:
- event_file: Zapisuje do úložiště objektů BLOB v Azure.
- ring_buffer: Úložiště založené na paměti se stejným chováním jako v místním prostředí
- event_counter: Počítá výskyty událostí
Soubor_event_file target vyžaduje konfiguraci s přihlašovacími údaji Azure Blob Storage:
ADD TARGET package0.event_file(
SET filename=N'https://yourstorageaccount.blob.core.windows.net/container/EventFile.xel'
)
10.3 Vytváření relací s rozsahem databáze
Vytvořte relaci v databázi Azure SQL:
CREATE EVENT SESSION [AzureMonitoring] ON DATABASE
ADD EVENT sqlserver.sql_statement_completed(
ACTION(sqlserver.sql_text, sqlserver.database_name)
)
ADD TARGET package0.ring_buffer
WITH (MAX_MEMORY=4096 KB);
ALTER EVENT SESSION [AzureMonitoring] ON DATABASE STATE = START;
Relace s rozsahem databáze v Azure se chovají podobně jako relace s rozsahem serveru v místním prostředí, ale s rozsahem omezeným na aktuální databázi.
11. Nejlepší postupy a optimalizace výkonu
11.1 Minimalizace dopadu na výkon
Rozšířené události jsou navrženy pro minimální režijní náklady, ale nesprávná konfigurace může ovlivnit výkon. Řiďte se těmito pokyny:
- Používejte specifické predikáty k filtrování událostí, místo abyste zachytili vše.
- Vyhněte se shromažďování zbytečných akcí, které zvyšují režii zpracování
- Vyberte vhodné tarzískává na základě potřeb uchovávání dat
- Nastavte rozumné velikosti vyrovnávacích pamětí a latence odesílání
- Monitorování spotřeby zdrojů relace pomocí DMV
11.2 Výběr správných událostí a filtrů
Vyberte události, které přímo řeší vaše cíle monitorování. Vyhýbejte se událostem s vysokou frekvencí, pokud to není nutné, a vždy používejte predikáty pro snížení objemu dat.
Například místo zachycení všech událostí sql_statement_completed filtrujte podle konkrétních databází nebo prahových hodnot trvání:
WHERE (
[sqlserver].[database_name] = N'ProductionDB'
AND [duration] > 1000000
)
11.3 Tarzískat pokyny pro výběr
Vybrat tarzískává na základě vašich analytických požadavků:
- Pro podrobnou historickou analýzu a dlouhodobé uchování použijte soubor event_file.
- Použijte ring_buffer pro monitorování v reálném čase s minimálním dopadem na I/O.
- Použijte event_counter, když záleží pouze na frekvenci.
- Použití histogramu pro analýzu rozdělení
- Použití pair_matching pro analýzu korelovaných událostí
11.4 Doporučení pro konfiguraci relace
Nakonfigurujte relace s příslušnými limity zdrojů:
- Nastavte MAX_MEMORY na základě očekávaného objemu událostí a serverových zdrojů
- Pro minimální režii v m použijte ALLOW_SINGLE_EVENT_LOSS.ost scénáře
- Nastavením MAX_DISPATCH_LATENCY vyvážíte potřeby v reálném čase s výkonem.
- Používejte rozdělení paměti PER_CPU na víceprocesorových systémech
- Vyhněte se STARTUP_STATE=ON, pokud není vyžadováno nepřetržité monitorování
11.5 Správa velikosti a uchovávání souborů událostí
Nakonfigurujte přepínání souborů, abyste zabránili neomezenému využití disku:
ADD TARGET package0.event_file(
SET filename=N'C:\XEvents\Session.xel',
max_file_size=(100),
max_rollover_files=(10)
)
Tato konfigurace uchovává přibližně 1 GB dat událostí (10 souborů × 100 MB). Upravte podle požadavků na uchování dat a dostupného úložiště.
12. Řešení problémů s prodlouženými událostmi
12.1 Běžné problémy a řešení
Mezi běžné problémy s rozšířenými událostmi patří relace, které nezaznamenávají data, snížení výkonu, problémy se soubory tardocházet k problémům a neočekávanému chování relace.
12.2 Relace nezaznamenává data
Pokud relace nezaznamenává očekávané události:
- Ověřte, zda je relace aktivní.tarted pomocí sys.dm_xe_sessions.
- Zkontrolujte predikáty, abyste se ujistili, že nefiltrují všechny události.
- Potvrďte, že události se spouštějí podle tempararsnadno se odstraní filtry.
- Zkontrolujte oprávnění, abyste se ujistili, že máte přístup k zobrazení dat relace.
- Zkontrolujte, zda je tarKonfigurace get je správná a zapisovatelná.
SELECT name, create_time FROM sys.dm_xe_sessions WHERE name = 'YourSessionName';
12.3 Zhoršení výkonu
Pokud rozšířené události způsobují problémy s výkonem:
- Přidejte predikáty pro snížení objemu událostí.
- Odstraňte zbytečné akce, které vybírají doplňkytary dat.
- Zvýšením MAX_DISPATCH_LATENCY snížíte frekvenci zápisů.
- Změňte EVENT_RETENTION_MODE na ALLOW_SINGLE_EVENT_LOSS.
- Pro události s vysokou frekvencí zvažte použití ring_buffer místo event_file.
12.4 Soubor Tarzískat problémy
Soubor tarproblémy se často týkají oprávnění nebo místa na disku:
- Ověřte SQL Server servisní účet má oprávnění k zápisu do tarzískat adresář.
- Ujistěte se, že je k dispozici dostatek místa na disku.
- Zkontrolujte, zda zadaná cesta existuje a je přístupná.
- Pokud se soubory nepřesouvají podle očekávání, zkontrolujte konfiguraci přehrávání souborů.
12.5 Ladění pomocí systémových zobrazení
Použijte DMV k diagnostice problémů s rozšířenými událostmi:
-- Check session status
SELECT s.name, s.create_time, s.total_regular_buffers, s.total_large_buffers
FROM sys.dm_xe_sessions AS s;
-- View session targets and their status
SELECT
s.name AS SessionName,
t.target_name,
t.execution_count,
CAST(t.target_data AS XML) AS TargetData
FROM sys.dm_xe_session_targets AS t
JOIN sys.dm_xe_sessions AS s
ON s.address = t.event_session_address;
-- Check for dropped events
SELECT s.name, s.dropped_event_count, s.dropped_buffer_count
FROM sys.dm_xe_sessions AS s;
13. Pokročilá témata
13.1 Vytváření vlastních balíčků událostí
Pokročilí uživatelé si mohou vytvářet vlastní balíčky událostí pro rozšíření SQL Server Rozšířená funkcionalita událostí. To vyžaduje vývoj v jazyce C++ a integraci s SQL Server rámec rozšiřitelnosti.
Vlastní balíčky umožňují monitorování událostí specifických pro danou aplikaci nebo integraci monitorovacích systémů třetích stran s infrastrukturou Extended Events.
13.2 Šablony relací událostí
SSMS poskytuje vestavěné šablony pro běžné scénáře monitorování. Přístup k šablonám při vytváření nových relací pomocí průvodce:
- V dialogovém okně Nová relace klikněte na tlačítko Šablona dropdown.
- Vyberte si z dostupných šablon, jako je Sledování podrobností dotazů nebo Stav systému.
- Upravte šablonu tak, aby vyhovovala vašim specifickým požadavkům.
13.3 Integrace s monitorovacími řešeními
Rozšířená data událostí mohou být použita pro podniková monitorovací řešení:
- Export dat událostí do centralizovaných systémů protokolování
- Analyzovat soubory událostí a načítat data do monitorovacích databází
- Vytvářejte vlastní dashboardy pomocí nástrojů BI
- Spouštění upozornění na základě specifických vzorců událostí
- Korelát SQL Server události s metrikami aplikací a infrastruktury
13.4 Automatizace a plánování
Automatizujte správu rozšířených událostí pomocí SQL Server Činidlo:
- Vytvářet úlohy protarzastavit/přerušit relace během určitých časových oken
- Naplánovat analýzu a reporting souborů událostí
- Implementujte zásady uchovávání dat archivací nebo odstraněním starých souborů událostí
- Automatizujte reakci na zjištěné podmínky, jako jsou problémy s výkonem nebo bezpečnostní události
14. Migrace z SQL Server profil
14.1 SQL Server Mapování událostí profileru na rozšířené události
Společnost Microsoft poskytuje mapování mezi SQL Server profil události a rozšířené události. Mezi běžná mapování patří:
- SQL:BatchCompleted -> sql_batch_completed
- SQL:Dávkytarting -> sql_batch_starting
- SQL:StmtCompleted -> sql_statement_completed
- SQL:StmtStarting -> sql_statement_starting
- Graf zablokování -> xml_deadlock_report
- Přihlášení k auditu -> přihlásit se
- Odhlášení z auditu -> odhlásit se
14.2 Převod definic trasování
Převést existující SQL Server Profiler trasuje relace rozšířených událostí identifikací ekvivalentních událostí a konfigurací vhodných predikátů. SSMS poskytuje pomoc s běžnými konverzemi.
Zkontrolujte filtry trasování a převeďte je na predikáty rozšířených událostí. Akce v rozšířených událostech nahrazují sloupce trasování z SQL Server Profiler.
14.3 Porovnání výkonu
Rozšířené události poskytují výrazně lepší výkon než SQL Server Profiler. Benchmarkové studie ukazují, že rozšířené události spotřebovávají méně cyklů CPU a mají menší dopad na propustnost transakcí.
Rozšířené události používají asynchronní zpracování a optimalizovanou správu paměti, zatímco SQL Server Profiler se spoléhá na synchronní zachycení událostí, které se blokuje, dokud není dokončeno zpracování trasování.
15. závěr
15.1 Shrnutí klíčových pojmů
SQL Server Rozšířené události poskytují výkonný a nenáročný rámec pro monitorování a řešení problémů. SQL ServerArchitektura se skládá z událostí, akcí, predikátů, targets a sessions, které spolupracují na zachycení relevantní aktivity serveru.
Relace lze vytvářet pomocí SSMS nebo T-SQL, což nabízí flexibilitu jak pro ad-hoc řešení problémů, tak pro automatizované monitorování. tarTypy get podporují různé analytické přístupy, od monitorování v reálném čase s ring_buffer až po historickou analýzu s event_file.
Rozšířené události poskytují lepší výkon ve srovnání s SQL Server Profiler a zároveň poskytuje komplexnější monitorovací funkce. Systém umožňuje správcům databází a vývojářům diagnostikovat problémy, optimalizovat výkon, zvyšovat zabezpečení a udržovat shodu s předpisy.
15.2 Další kroky a další zdroje
Abyste mohli pokračovat v rozvoji svého SQL Server Odborné znalosti XEvents:
- Implementujte rozšířené události v testovacích prostředích a získejte praktické zkušenosti
- Projděte si dokumentaci společnosti Microsoft, kde najdete kompletní katalogy událostí a podrobný syntaktický přehled.
- Připojte SQL Server komunitní fóra, kde se lze učit ze zkušeností ostatních
- Prozkoumejte pokročilé scénáře, jako jsou vlastní balíčky a integrace s monitorovacími platformami
- Vyvinout knihovnurary šablon relací pro běžné scénáře monitorování
16 Sekce Často kladených otázek
Otázka: Co jsou SQL Server Rozšířené události?
A: SQL Server Extended Events je lehký systém pro monitorování výkonu integrovaný do SQL Server Databázový engine, který zachycuje podrobné informace o provozu serveru s minimálními režijními náklady.
Otázka: Jak se liší rozšířené události od SQL Server Profiler?
A: Rozšířené události poskytují lepší výkon, nižší režijní náklady a flexibilnější konfiguraci než SQL Server Profiler. SQL Server Profiler je zastaralý a společnost Microsoft doporučuje používat pro všechny úlohy monitorování rozšířené události.
Otázka: Mohou mít prodloužené události dopad SQL Server výkon?
A: Při správné konfiguraci s vhodnými predikáty a limity zdrojů mají rozšířené události minimální dopad na výkon. Špatná konfigurace bez filtrování může výkon ovlivnit.
Otázka: Jaká oprávnění jsou potřeba k vytvoření relací rozšířených událostí?
A: Pro relace s rozsahem na serveru potřebujete oprávnění ALTER ANY EVENT SESSION nebo oprávnění CONTROL pro databázi pro relace s rozsahem na databázi.
Otázka: Jak si mohu zobrazit data rozšířených událostí?
A: Použijte SQL Server Prohlížeč živých dat v Management Studiu, dotazování souborů událostí pomocí sys.fn_xe_file_target_read_file nebo dotazování dat z vyrovnávací paměti kruhu prostřednictvím DMV.
Otázka: Mohou rozšířené události detekovat poškození databáze?
A: Ano, funkce Rozšířené události dokáže zachytit chyby související s poškozením (823, 824, 825) a události podezřelých stránek, čímž poskytuje včasné varování před potenciálními problémy s poškozením.
Otázka: Jaký je rozdíl mezi událostmi, akcemi a predikáty?
A: Události jsou události, které chcete sledovat. Akce přidávají doplněk.tarinformace o y k zachyceným událostem. Predikáty filtrují události na základě podmínek, aby se snížil objem dat.
Otázka: Jak mohu monitorovat dotazy z konkrétních aplikací nebo databází?
A: V konfiguraci událostí použijte predikáty k filtrování podle database_name, client_app_name nebo jiných relevantních polí.
Q: Co tarMám použít pro rozšířené události?
A: Použijte event_file pro trvalé ukládání a historickou analýzu, ring_buffer pro monitorování v reálném čase s nízkou režií, event_counter pro jednoduché sledování četnosti a histogram pro analýzu rozdělení.
Otázka: Jsou v databázi Azure SQL k dispozici rozšířené události?
A: Ano, Azure SQL Database podporuje rozšířené události s rozsahem databáze, přičemž soubory událostí jsou uloženy v úložišti objektů BLOB v Azure.
Otázka: Jak řeším problém s relací rozšířených událostí, která nezaznamenává data?
A: Ověřte, zda je relace aktivnítarTede, zkontroluj, zda predikáty nefiltrují všechny události, potvrď tarzískat konfiguraci a zkontrolovat oprávnění pomocí systémových DMV.
Otázka: Mohu automatizovat správu rozšířených událostí?
A: Ano, používat SQL Server Úlohy agentů pro starzastavovat/přerušovat relace, analyzovat soubory událostí, implementovat zásady uchovávání dat a reagovat na zjištěné podmínky.
Reference
- Rychlé Start: Rozšířené události v SQL Server – Microsoft Learn
- Rozšířený přehled událostí – Microsoft Learn
- SQL Server Rozšířené lekce akcí – Microsoft Learn
- Tarzískává pro rozšířené události v SQL Server – Microsoft Learn
- SQL Server Rozšířený modul událostí – Microsoft Learn
- SQL Server Profiler: Kompletní průvodce
- DBCC CHECKDB: Kompletní průvodce
- DataNumen SQL Recovery
O autorovi
Yuan Sheng je seniorní správce databází (DBA) s více než 10 lety zkušeností v SQL Server prostředí a správu podnikových databází. Úspěšně vyřešil stovky scénářů obnovy databází ve finančních službách, zdravotnictví a výrobních organizacích.
Yuan se specializuje na SQL Server obnova databáze, řešení s vysokou dostupnostía optimalizaci výkonu. Jeho rozsáhlé praktické zkušenosti zahrnují správu databází o objemu více terabajtů, implementaci Vždy dostupné skupiny dostupnostia vývoj automatizovaných strategií zálohování a obnovy pro kritické obchodní systémy.
Díky svým technickým znalostem a praktickému přístupu se Yuan zaměřuje na vytváření komplexních průvodců, které pomáhají správcům databází a IT profesionálům řešit složité SQL Server efektivně zvládá výzvy. Udržuje si přehled o nejnovějších SQL Server vydání a vyvíjející se databázové technologie společnosti Microsoft a pravidelně testuje scénáře obnovy, aby zajistil, že jeho doporučení odrážejí osvědčené postupy z reálného světa.
Máte otázky ohledně SQL Server potřebujete další pokyny k odstraňování problémů s databází? Yuan vítá zpětnou vazbu a návrhy pro vylepšení těchto technických zdrojů.

















