1. Úvod
1.1 Čo sú SQL Server Predĺžené udalosti?
SQL Server Extended Events je ľahký systém monitorovania výkonu, ktorý umožňuje správcom a vývojárom zhromažďovať a analyzovať podrobné údaje o aktivite servera. Tento systém je integrovaný do SQL Server Databázový engine a poskytuje komplexný prehľad o bežných operáciách aj scenároch riešenia problémov.
1.2 Prečo používať rozšírené udalosti na monitorovanie?
SQL Server Rozšírené udalosti ponúkajú niekoľko presvedčivých výhod pre monitorovanie databázy a riešenie problémov:
- Minimálny vplyv na výkon vďaka ľahkej architektúre
- Podrobná kontrola nad zhromažďovaním údajov a filtrovaním udalostí
- Prispôsobiteľný zber údajov prispôsobený špecifickým potrebám monitorovania
- Možnosť zachytávať udalosti z viacerých balíkov súčasne
- Flexibilné možnosti filtrovania pre zameranie sa na relevantné operácie
- Podpora monitorovania produkčného systému bez zhoršenia používateľského zážitku
- Komplexné sledovanie výkonnostných metrík
- Pokročilá diagnostikaostic možnosti riešenia problémov
- Údržba audítorskej stopy pre požiadavky na dodržiavanie predpisov
- Možnosti analýzy údajov v reálnom čase a historických údajov
1.3 Rozšírené udalosti vs. SQL Server Profiler
Zatiaľ čo SQL Server Profiler Bol tradičným monitorovacím nástrojom, MS SQL Extended Events poskytuje efektívnejšiu alternatívu. Extended Events spotrebúva menej systémových prostriedkov a ponúka lepšiu škálovateľnosť pre produkčné prostredia.
SQL Server Profiler je teraz zastaraný a spoločnosť Microsoft odporúča migráciu na rozšírené udalosti pre všetky monitorovacie aktivity.
2. Pochopenie architektúry rozšírených udalostí
2.1 Komponenty enginu rozšírených udalostí
Modul rozšírených udalostí pozostáva z niekoľkých základných komponentov, ktoré spolupracujú na zachytávaní, spracovaní a ukladaní údajov o udalostiach. Pochopenie týchto komponentov vám pomôže navrhnúť efektívne riešenia monitorovania.
- Dispečer: Komponent dispečera koordinuje tok udalostí zo zdrojov udalostí do enginu rozšírených udalostí. Keď sa udalosť spustí, dispečer dostane oznámenie a smeruje ho do aktívnych relácií, ktoré sú prihlásené na odber daného konkrétneho typu udalosti.
- pufer: Tempo bufferovrarpred zápisom do pamäte uložiť údaje o udalostiach tardostane. Tento mechanizmus vyrovnávania zlepšuje výkon znížením počtu I/O operácií. Veľkosť vyrovnávacej pamäte a nastavenia správy je možné nakonfigurovať tak, aby sa vyvážilo využitie pamäte s požiadavkami na zachytávanie údajov.
- session: Relácia definuje rozsah monitorovania udalostí. Určuje, ktoré udalosti sa majú zachytiť, aké akcie sa majú vykonať, ktoré predikáty sa majú použiť a kam sa majú uložiť výsledky. Relácie je možné vytvárať, upravovať,tarted a zastavil sa samostatne.
- Tarzískať inštanciu: TarInštancie get predstavujú úložiská pre zachytené údaje o udalostiach. Každá relácia môže zapisovať do jedného alebo viacerých tardostane, ako sú súbory, kruhové vyrovnávacie pamäte alebo počítadlá. Tarspracováva a uchováva informácie o udalosti pre neskoršiu analýzu.
2.2 Balíčky podujatí
SQL Server Rozšírené udalosti organizujú funkcionalitu do balíkov. Každý balík obsahuje súvisiace udalosti, akcie, typy, predikáty a tardostane. Medzi bežné balíky patria sqlserver, sqlos a package0.
- Balík sqlserver poskytuje udalosti špecifické pre databázu, ako sú dotazy a transakcie.
- Balík sqlos obsahuje udalosti operačného systému.
- Balík package0 ponúka univerzálne funkcie používané vo všetkých balíkoch.
2.3 Typy udalostí a polia
Udalosti predstavujú výskyty v rámci SQL Server ktoré chcete monitorovať. Každý typ udalosti má preddefinované polia, ktoré zachytávajú relevantné informácie. Napríklad udalosť sql_statement_completed obsahuje polia pre trvanie, čas CPU, čítania a zápisy.
Udalosti môžu byť synchrónne alebo asynchrónne. Synchrónne udalosti sa spúšťajú počas samotnej operácie, zatiaľ čo asynchrónne udalosti sa spúšťajú po jej dokončení. Pochopenie charakteristík udalostí vám pomôže vybrať vhodné udalosti pre vaše potreby monitorovania.
2.4 akcií
Akcie pridať doplnoktarinformácie o zachytených udalostiach. Keď sa udalosť spustí, vykonajú sa súvisiace akcie na zhromaždenie ďalšieho kontextu, ako je text SQL, ID relácie alebo informácie o zásobníku volaní.
Medzi bežné akcie patrí sql_text na zachytenie príkazov dotazu, database_name na identifikáciu databázy a client_hostnázov na sledovanie pôvodného servera. Akcie poskytujú dôležitý kontext pre riešenie problémov a analýzu.
2.5 Tardostane
Tarurčuje, ako a kde sa ukladajú údaje o udalostiach. SQL Server Rozšírené udalosti podporujú viacero tarzískať typy vrátane:
- súbor_event_file pre diskové úložisko, ktoré poskytuje trvalé úložisko pre podrobnú analýzu
- ring_buffer pre uchovávanie údajov v pamäti, ktorý ponúka rýchly prístup k nedávnym udalostiam s minimálnou réžiou
- event_counter pre jednoduché počítanie
- histogram pre zoskupovanie
- párovanie párov pre koreláciu súvisiacich udalostí
2.6 Predikáty (filtre)
Predikáty filtrujú udalosti na základe zadaných podmienok, čím znižujú objem zachytených údajov. Môžete filtrovať podľa názvu databázy, názvu aplikácie, ID relácie, prahových hodnôt trvania alebo ľubovoľnej hodnoty poľa udalosti.
Efektívne používanie predikátov minimalizuje vplyv na výkon zachytávaním iba relevantných udalostí. Komplexné predikáty kombinujú viacero podmienok pomocou logických operátorov na vytvorenie presných kritérií filtrovania.
3. Stavy a životný cyklus relácie rozšírenej udalosti
3.1 Stavy relácie: VYTVORIŤ, ZMENIŤ a ZRUŠIŤ
Rozšírené relácie udalostí postupujú cez rôzne stavy:
- Príkaz CREATE EVENT SESSION definuje novú reláciu, ale nedefinuje ju.tarRelácia existuje v zastavenom stave, kým nie je explicitne aktivovaná.
- Príkaz ALTER EVENT SESSION upravuje konfiguráciu relácie alebo mení jej stav medzi zastavenou a zastavenou.tarted.
- Príkaz DROP EVENT SESSION úplne odstráni definíciu relácie zo servera.
3.2 Obsah a charakteristika relácie
Každá relácia obsahuje súbor udalostí, akcií, targets a predikáty. Relácie majú implicitné hranice, ktoré definujú ich rozsah a správanie. Možnosti konfigurácie riadia alokáciu pamäte, uchovávanie udalostí a latenciu odoslania.
Charakteristiky relácie zahŕňajú, či pretrvávajú naprieč serverovými riešeniami.tarts, maximálna alokácia pamäte a spôsob, akým zvládajú pamäťový tlak. Tieto nastavenia výrazne ovplyvňujú správanie relácie a spotrebu zdrojov.
3.3 Hranice relácií a balíky
Hranice relácií definujú vzťahy medzi udalosťami, targets a balíčky. Udalosti z jedného balíčka môžu spúšťať akcie z iného balíčka, čo poskytuje flexibilitu v stratégiách zberu údajov.
Vzťahy medzi balíkmi vám umožňujú kombinovať udalosti z viacerých zdrojov v rámci jednej relácie. Táto funkcia umožňuje komplexné monitorovacie scenáre, ktoré zahŕňajú rôzne SQL Server subsystémy.
4. Vytváranie rozšírených relácií udalostí pomocou SSMS
4.1 Predpoklady a nastavenie
Pred vytvorením SQL Server Pre relácie rozšírených udalostí sa uistite, že máte príslušné povolenia. Pre relácie s rozsahom servera potrebujete povolenie ALTER ANY EVENT SESSION alebo pre relácie s rozsahom databázy povolenie CONTROL v databáze.
Overte to SQL Server Management Studio je nainštalované a pripojené k vášmu tarzískať inštanciu. Oboznámte sa s požiadavkami na monitorovanie a identifikujte, ktoré udalosti a tarnajlepšie vyhovuje vašim potrebám.
4.2 Prístup k rozšíreným udalostiam v Prieskumníkovi objektov
Ak chcete získať prístup k rozhraniu rozšírených udalostí v systéme SSMS, postupujte podľa týchto krokov:
- Otvorený SQL Server Management Studio a pripojte sa k svojmu SQL Server inštancie.
- V Prieskumníkovi objektov rozbaľte management -> Rozšírené udalosti.
- Uzol Rozšírené udalosti obsahuje Sessions a Balíčky priečinky na správu konfigurácií monitorovania.
4.3 Vytvorenie novej relácie
Vytvorenie novej relácie:
-
- Kliknite pravým tlačidlom myši na ikonu Sessions zložka pod Rozšírené udalosti.
- vybrať Nová relácia na otvorenie konfiguračného dialógového okna. Nasledujúci obsah použije túto metódu na vytvorenie novej relácie.
Poznámka: Sprievodca novou reláciou je k dispozícii aj pre viac sprievodcovský zážitok.
4.3.1 Všeobecná konfigurácia stránky
na všeobecný stránku, nakonfigurujte základné vlastnosti relácie:
- Zadajte názov relácie do Názov relácie pole. Používajte popisné názvy, ktoré označujú účel monitorovania.
- Voliteľne vyberte Starrelácia udalosti na serveri startrubice povoliť automatickú aktiváciu relácie.
- Predvolená šablóna relácie je prázdnyAk používate preddefinovanú konfiguráciu, môžete použiť aj iné šablóny.
4.3.2 Nastavenie stránky udalostí
Podujatia Stránka vám umožňuje vybrať, ktoré udalosti chcete monitorovať:
- Vybrať Podujatia strana zľava Vyberte stránku panel.
- V Knižnica udalostírary, prehliadajte dostupné udalosti alebo použite funkciu vyhľadávania.
- Filtrujte udalosti zadaním kľúčových slov, ako napríklad „sql_statement_completed“, a vyhľadajte relevantné udalosti.
- Vyberte požadovanú udalosť, napríklad sql_statement_completed.
- Kliknite na tlačidlo so šípkou doprava, ak chcete udalosť presunúť na Vybrané udalosti Zoznam.
4.3.3 Konfigurácia úložiska údajov
data Storage stránka definuje, kde sa ukladajú údaje o udalostiach:
- Vybrať data Storage strana zľava Vyberte stránku panel.
- V Tardostane oblasť, vyberte si tarzískať typ z rozbaľovacej ponuky.
(1) súbor_udalostí Tardostať
Súbor_udalosti tarukladá dáta do súborov na disk s príponou .xel:
- vybrať súbor_udalostí z tarzískať rozbaľovací zoznam typov.
- Zadajte cestu k súboru, napríklad C:\temp\VašaRelácia_Target.xel.
- Nakonfigurujte možnosti prechodu kurzorom myši na správu miesta na disku nastavením maximálnej veľkosti súborov a počtu súborov.
- tarFunkcia get zapisuje udalosti nepretržite, kým sa relácia neukončí alebo kým sa nedosiahnu limity úložiska.
(2) vyrovnávacia pamäť kruhu Tardostať
Kruhový buffer target ukladá udalosti do pamäte pre rýchly prístup bez diskového I/O:
- vybrať vyrovnávacia pamäť kruhu as tarzískať typ.
- Nakonfigurujte maximálnu alokáciu pamäte pre vyrovnávaciu pamäť.
- Uvedomte si, že staršie udalosti sa po naplnení vyrovnávacej pamäte zahodia, čo je vhodné na monitorovanie nedávnych aktivít.
(3) počítadlo_udalostí Tardostať
Počítadlo udalostí tarFunkcia get jednoducho počíta výskyty udalostí bez ukladania podrobných údajov. To poskytuje minimálne náklady, keď potrebujete iba informácie o frekvencii.
(4) histogram Tardostať
Histogram tarFunkcia get zoskupuje udalosti podľa zadanej hodnoty poľa a vytvára štatistiky rozdelenia. Toto je užitočné na identifikáciu bežných vzorcov alebo hodnôt s vysokou frekvenciou.
(5) párovanie Tardostať
Párové zhodovanie tarzískať korelácie súvisiacich udalostí, ako je získanie a uvoľnenie zámku. To umožňuje analýzu párových operácií a ich časových vzťahov.
NIKDY rozšírené nastavenia
pokročilý stránka poskytuje možnosti konfigurácie na úrovni relácie:
- Vybrať pokročilý strana zľava Vyberte stránku panel.
- Konfigurácia Režim uchovávania udalostí na riadenie spôsobu spracovania udalostí pod tlakom pamäte.
- Sada Maximálna latencia odoslania vyvážiť spracovanie v reálnom čase s výkonom systému.
- Konfigurácia Maximálna veľkosť pamäte a Maximálna veľkosť udalosti na základe vašich požiadaviek na monitorovanie.
- vybrať Režim rozdelenia pamäte optimalizovať pre prostredia s jedným alebo viacerými procesormi.
4.4 Konfigurácia filtrov udalostí (predikáty)
Predikáty znižujú objem údajov filtrovaním udalostí na základe špecifických kritérií. Konfigurácia filtrov:
- na Podujatia vyberte udalosť, ktorú chcete filtrovať, napríklad „sql_statement_completed“.
- kliknite Konfigurácia otvorte dialógové okno konfigurácie udalosti.
- Vybrať Filter (predikát) tab.
- V Pole V rozbaľovacej ponuke vyberte pole, podľa ktorého chcete filtrovať, napríklad trvanie.
- Vyberte položku operátor, napríklad „>“.
- Zadajte filter Hodnota, napríklad 1000000 (1 sekunda).
- V prípade potreby pridajte ďalšie podmienky.
4.5 Výber polí akcií a udalostí
Pre každú udalosť si môžete vybrať údaje, ktoré sa majú zhromažďovať:
- na Podujatia vyberte udalosť, z ktorej chcete vybrať údaje, napríklad „sql_statement_completed“.
- kliknite Konfigurácia otvorte dialógové okno konfigurácie udalosti.
- Vybrať Globálne polia (akcie) tab.
- Vyberte akcie na pridanie doplnkutarinformácie, ako napríklad názov_database alebo názov_client_app.
- Prečítajte si Polia udalostí a zistite, ktoré polia sa automaticky zaznamenávajú.
- Vymažte všetky nepotrebné polia, aby ste znížili objem údajov.
S 4.6tarriadenie a správa relácií
Po konfigurácii relácie môžetetara monitorujte jeho prevádzku:
- kliknite OK na vytvorenie relácie.
- V Prieskumníkovi objektov rozbaľte Sessions priečinok, aby ste videli svoju novú reláciu.
- Kliknite pravým tlačidlom myši na názov relácie a vyberte Start Relácia začať zaznamenávať udalosti.
- Ak chcete zobraziť živé údaje, kliknite pravým tlačidlom myši na reláciu a vyberte Sledujte živé dáta.
- Zastavte reláciu kliknutím pravým tlačidlom myši a výberom Zastaviť reláciu.
5. Vytváranie rozšírených relácií udalostí pomocou T-SQL
5.1 Syntax VYTVORENIA RELÁCIE UDALOSTI
Vytváranie relácií rozšírených udalostí pomocou T-SQL poskytuje presnú kontrolu a umožňuje skriptovanie pre automatizované nasadenie. Príkaz CREATE EVENT SESSION sa riadi špecifickou syntaktickou štruktúrou.
Základná syntax zahŕňa názov relácie, klauzuly ADD EVENT pre každú udalosť, ADD TARKlauzuly GET pre ciele úložiska a voliteľné klauzuly WITH pre konfiguráciu relácie.
5.2 Vytvorenie základnej relácie udalosti
Základná relácia monitoruje špecifické udalosti a zapisuje výsledky do tarzískať. Tu je postup, ako zostaviť základné komponenty.
5.2.1 Definovanie názvu a možností relácie
Starvytvorením relácie s popisným názvom:
CREATE EVENT SESSION [SampleSession] ON SERVER
Klauzula ON SERVER vytvára reláciu s rozsahom servera, ktorá pretrváva aj po zmenách v databáze. Pre databázu Azure SQL použite pre relácie s rozsahom databázy klauzulu ON DATABASE.
5.2.2 Pridávanie udalostí pomocou funkcie PRIDAŤ UDALOSŤ
Pridajte udalosti na zachytávanie pomocou klauzuly ADD EVENT:
CREATE EVENT SESSION [SampleSession] ON SERVER ADD EVENT sqlserver.sql_statement_completed
Toto zachytáva všetky dokončené príkazy SQL. Viacero udalostí môžete pridať zahrnutím ďalších klauzúl ADD EVENT.
5.2.3 Konfigurácia akcií udalostí
Akcie zhromažďujú dodatočný kontext pre každú udalosť. Akcie pridajte do zátvoriek za názvom udalosti:
CREATE EVENT SESSION [SampleSession] ON SERVER
ADD EVENT sqlserver.sql_statement_completed(
ACTION(sqlserver.sql_text, sqlserver.database_name, sqlserver.username)
)
Tento príklad zachytáva text SQL, názov databázy a meno používateľa pre každý dokončený príkaz.
5.2.4 Nastavenie predikátov udalostí (klauzula WHERE)
Predikáty filtrujú udalosti, aby sa znížil objem dát. V definícii udalosti použite klauzulu WHERE:
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 príkazy s trvaním dlhším ako 5 sekúnd (5 000 000 mikrosekúnd).
5.3 Pridanie udalosti Tardostane
Tardefinuje, kde sa ukladajú údaje o udalostiach a ako sa spracúvajú.
5.3.1 PRIDAŤ TARSyntax príkazu GET
pridať tarpoužíva ADD TARKlauzula GET po definovaní všetkých udalostí:
ADD TARGET package0.event_file(
SET filename=N'C:\XEvents\SampleSession.xel'
)
Predpona package0 označuje target pochádza zo základného balíka.
5.3.2 Konfigurácia Tarzískať parametre
Každý tarTyp get akceptuje špecifické parametre. Pre event_file nakonfigurujte názov súboru, 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)
)
Táto konfigurácia vytvára súbory s veľkosťou až 50 MB, pričom pri prechode medzi súbormi sa uchováva až 5 súborov.
5.4 Možnosti a nastavenia relácie
Klauzula WITH konfiguruje možnosti na úrovni relácie, ktoré riadia správanie a využívanie zdrojov.
5.4.1 MAX_MEMORY a EVENT_RETENTION_MODE
Riadenie alokácie pamäte a spracovanie udalostí pod tlakom:
WITH (
MAX_MEMORY=4096 KB,
EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS
)
Možnosti EVENT_RETENTION_MODE zahŕňajú ALLOW_SINGLE_EVENT_LOSS pre minimálne využitie pamäte, ALLOW_MULTIPLE_EVENT_LOSS pre mierne zaťaženie a NO_EVENT_LOSS pre úplné uchovávanie údajov na úrovni c.ost potenciálneho vplyvu na výkon.
5.4.2 MAX_DISPATCH_LATENCY
Nastavenie maximálneho času, počas ktorého môžu udalosti zostať vo vyrovnávacích pamätiach pred ich zápisom. tardostane:
WITH (
MAX_DISPATCH_LATENCY=30 SECONDS
)
Nižšie hodnoty poskytujú viac údajov v reálnom čase v čase cost zvýšených I/O operácií.
5.4.3 REŽIM_PAMÄŤOVEJ_PARTICIE
Optimalizujte rozdelenie pamäte pre vašu hardvérovú konfiguráciu:
WITH (
MEMORY_PARTITION_MODE=PER_CPU
)
Možnosti zahŕňajú NONE pre jeden oddiel, PER_NODE pre systémy NUMA a PER_CPU pre maximálnu súbežnosť na systémoch s viacerými procesormi.
S 5.5tarZastavenie, ukončenie a zmena relácií
Spravujte stav a konfiguráciu relácie pomocou príkazov ALTER EVENT SESSION.
5.5.1 ZMENA RELÁCIE UDALOSTI pre Start/Stop
Starrelácia po vytvorení:
ALTER EVENT SESSION [SampleSession] ON SERVER STATE = START;
Zastavenie bežiacej relácie:
ALTER EVENT SESSION [SampleSession] ON SERVER STATE = STOP;
5.5.2 Úprava existujúcich relácií
Upravte konfiguráciu relácie počas zastavenia. Pridajte udalosti:
ALTER EVENT SESSION [SampleSession] ON SERVER ADD EVENT sqlserver.sql_batch_completed;
Odstrániť udalosti:
ALTER EVENT SESSION [SampleSession] ON SERVER DROP EVENT sqlserver.sql_statement_completed;
5.5.3 Zrušenie relácií udalostí
Úplne odstráňte reláciu pomocou príkazu DROP EVENT SESSION:
DROP EVENT SESSION [SampleSession] ON SERVER;
Pred skončením je potrebné ukončiť reláciu.
6. Práca s udalosťou Tardostane sa do detailov
6.1 súbor_udalostí Tarzískať konfiguráciu
Súbor_udalosti target poskytuje trvalé úložisko pre dáta udalostí s flexibilnými možnosťami konfigurácie.
6.1.1 Cesta k súborom a konvencie pomenovania
Zadajte úplnú cestu a názov súboru pre súbory udalostí:
ADD TARGET package0.event_file(
SET filename=N'C:\XEvents\MySession.xel'
)
Pre rozšírené súbory denníka udalostí použite príponu .xel. Uistite sa, že SQL Server Servisný účet má oprávnenia na zápis do zadaného adresára.
6.1.2 Správa prechodu medzi súbormi a ich veľkosti
Nakonfigurujte automatické presúvanie súborov na správu miesta na disku:
ADD TARGET package0.event_file(
SET filename=N'C:\XEvents\MySession.xel',
max_file_size=(50),
max_rollover_files=(10)
)
Keď súbor dosiahne veľkosť 50 MB, SQL Server Rozšírené udalosti vytvoria nový súbor so zvýšenou príponou. Po dosiahnutí 10 súborov sa najstarší súbor prepíše.
6.1.3 Čítanie údajov zo súboru udalostí
Dotazovanie údajov zo súboru udalostí pomocou sys.fn_xe_file_tarFunkcia 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 prečíta všetky súbory spojené s reláciou.
6.2 kruhový_vyrovnávací_pamäť Tarzískať použitie
Kruhový buffer tarukladá udalosti do pamäte pre rýchly prístup k nedávnej aktivite.
6.2.1 Ukladanie udalostí v pamäti
Nakonfigurujte ring_buffer pre úložisko založené na pamäti:
ADD TARGET package0.ring_buffer
Udalosti zostávajú prístupné iba počas aktívnej relácie a SQL Server beží. Dáta sú lost keď sa relácia zastaví alebo server restarts.
6.2.2 Veľkosť a konfigurácia vyrovnávacej pamäte
Alokácia pamäte pre kruhovú vyrovnávaciu pamäť:
ADD TARGET package0.ring_buffer(
SET max_memory=(4096)
)
Zadajte pamäť v KB. Keď sa vyrovnávacia pamäť naplní, staršie udalosti sa zahodia pomocou metódy FIFO.
6.2.3 Dotazovanie údajov z vyrovnávacej pamäte kruhu
Prístup k údajom z vyrovnávacej pamäte kruhu prostredníctvom 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';
tarFunkcia get_data obsahuje informácie o udalostiach vo formáte XML.
6.3 počítadlo_udalostí Tardostať
Počítadlo udalostí target poskytuje jednoduché počítanie bez podrobného ukladania údajov:
ADD TARGET package0.event_counter
Časť tarSledovanie frekvencie udalostí s minimálnou réžiou, užitočné pre monitorovanie veľkého objemu, kde záleží iba na počte.
6.4 histogram Tardostať
Histogram tarzoskupiť udalosti podľa hodnôt polí:
ADD TARGET package0.histogram(
SET filtering_event_name=N'sqlserver.sql_statement_completed',
source_type=0,
source=N'database_name'
)
Táto konfigurácia vytvorí histogram znázorňujúci rozloženie udalostí v databázach.
6.5 párovanie Tardostať
Párové zhodovanie tarzískať korelácie súvisiacich udalostí, ako napríklad získanie zámkov s ich vydaniami:
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 operácií a ich trvania.
7. Zobrazenie a analýza údajov o rozšírených udalostiach
7.1 Používanie SSMS na zobrazenie živých údajov
SQL Server Management Studio poskytuje grafické rozhranie na zobrazenie údajov o rozšírených udalostiach v reálnom čase:
- V Prieskumníkovi objektov rozbaľte management -> Rozšírené udalosti -> Sessions.
- Kliknite pravým tlačidlom myši na aktívnu reláciu.
- vybrať Sledujte živé dáta otvorte prehliadač živých údajov.
- Udalosti sa zobrazujú v mriežke tak, ako k nim dochádza.
- Kliknutím na jednotlivé udalosti zobrazíte podrobné hodnoty polí v table s podrobnosťami.
- Pomocou filtrov panela s nástrojmi sa môžete zamerať na konkrétne typy udalostí alebo hodnoty polí.
7.2 Dotazovanie údajov súboru udalostí pomocou T-SQL
Dotazy T-SQL poskytujú flexibilnú analýzu zachytených údajov o udalostiach.
7.2.1 súbor sys.fn_xe_tarFunkcia get_read_file
Prečítajte si údaje zo súboru udalostí pomocou tejto systémovej funkcie:
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
);
Funkcia vráti jeden riadok na udalosť s podrobnosťami vo formáte XML.
7.2.2 Analýza údajov o udalostiach vo formáte XML
Extrahujte konkrétne hodnoty z údajov o udalostiach 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í zo štruktúry XML.
7.2.3 Prevod údajov o udalostiach do tabuliek
Vytvorte štruktúrované sady výsledkov z údajov o udalostiach:
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 Dotazovanie údajov z vyrovnávacej pamäte kruhu
Extrahovanie dát 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é zobrazenia pre rozšírené udalosti
SQL Server poskytuje niekoľko zobrazení DMV a katalógu na správu a monitorovanie relácií rozšírených udalostí.
7.4.1 sys.server_event_sessions
Zobraziť definície relácií uložené na serveri:
SELECT
name,
event_retention_mode_desc,
max_dispatch_latency,
max_memory,
max_event_size,
memory_partition_mode_desc
FROM sys.server_event_sessions;
Toto zobrazenie katalógu zobrazuje podrobnosti konfigurácie pre všetky definované relácie.
7.4.2 sys.dm_xe_sessions
Zobraziť aktuálne aktívne relácie:
SELECT
name,
create_time,
total_regular_buffers,
regular_buffer_size,
total_large_buffers,
large_buffer_size
FROM sys.dm_xe_sessions;
Toto DMV poskytuje informácie o aktívnych reláciách rozšírených udalostí za behu.
7.4.3 sys.dm_xe_session_tardostane
pohľad tarsa priraďuje k aktívnym reláciá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 Ďalšie užitočné DMV
Ďalšie zobrazenia poskytujú komplexné informácie o relácii:
- sys.dm_xe_session_events: Zoznam udalostí v aktívnych reláciách
- sys.dm_xe_session_event_actions: Zobrazuje akcie nakonfigurované pre udalosti relácie
- sys.dm_xe_objects: Kataloguje všetky dostupné udalosti, akcie a tardostane
- sys.dm_xe_object_columns: Polia s podrobnosťami dostupné pre každý typ udalosti
- sys.dm_xe_packages: Zoznam všetkých balíkov rozšírených udalostí
8. Praktické prípady použitia a príklady
8.1 Monitorovanie vykonávania SQL príkazov
Sledovanie vykonávania príkazov SQL poskytuje prehľad o vzoroch dotazov a charakteristikách výkonu.
8.1.1 Sledovanie udalostí sql_statement_completed
Vytvorte reláciu na monitorovanie dokončených SQL príkazov:
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 Filtrovanie podľa databázy alebo aplikácie
Zamerajte sa na konkrétne databázy alebo aplikácie pomocou predikátov:
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 Zachytávanie informácií o uviaznutí
Analýza deadlocku vyžaduje zachytenie podrobných informácií o konfliktných transakciách.
8.2.1 Udalosť xml_deadlock_report
Vytvorte reláciu na zachytenie kompletných grafov deadlockov:
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 grafov deadlockov
Extrakcia a analýza informácií o zablokovaní:
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 procesoch, zdrojoch a výbere obete.
8.3 Problémy s výkonom sledovania dotazov
Identifikujte dotazy s nízkym výkonom pomocou metrík trvania a spotreby zdrojov.
8.3.1 Detekcia dlhotrvajúcich dotazov
Zachytávanie dotazov prekračujúcich určité prahové hodnoty trvania:
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
Zachytenie plánov dotazov pre 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 Monitorovanie prihlasovacích a bezpečnostných udalostí
Sledujte aktivity overovania a autorizácie pre účely bezpečnostného auditu.
8.4.1 Sledovanie úspešného a neúspešného prihlásenia
Monitorujte úspešné aj neúspešné pokusy o prihlásenie:
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 Zmeny povolení
Sledovanie úprav bezpečnostných povolení:
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 Monitorovanie na úrovni databázy
Monitorujte operácie a zmeny stavu špecifické pre databázu.
8.5.1 Udalosti zálohovania a obnovy
Sledovanie operácií zálohovania 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 Zmeny stavu databázy
Monitorovanie zmien stavu databázy:
CREATE EVENT SESSION [DatabaseStateChanges] ON SERVER ADD EVENT sqlserver.database_started, ADD EVENT sqlserver.database_stopped ADD TARGET package0.ring_buffer;
8.6 Detekcia poškodenia databázy a problémov s integritou
SQL Server Rozšírené udalosti poskytujú funkcie včasného varovania na detekciu potenciálneho poškodenia databázy, čo umožňuje proaktívny zásah skôr, ako sa problémy vyhrotia.
8.6.1 Kľúčové udalosti pre odhaľovanie korupcie
Niekoľko udalostí signalizuje potenciálne poškodenie alebo problémy s I/O.
8.6.1.1 error_reported Udalosť pre kritické chyby
Udalosť error_reported zachytáva všetky SQL Server chyby vrátane čísel chýb súvisiacich s korupciou:
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 logickej konzistencie a 825 hlási úspešné pokusy o čítanie a opakovanie, ktoré môžu naznačovať problémy s hardvérom.
8.6.1.2 Udalosť database_suspect_data_page
Táto udalosť sa spustí, keď SQL Server narazí na podozrivú stránku:
ADD EVENT sqlserver.database_suspect_data_page
Podozrivé stránky označujú potenciálne poškodenie a sú zaznamenané v tabuľke msdb.dbo.suspect_pages.
8.6.1.3 errorlog_written Udalosť
Zachytiť položky zapísané do SQL Server protokol chýb:
ADD EVENT sqlserver.errorlog_written(
WHERE ([severity] >= (16))
)
8.6.2 Vytvorenie relácie monitorovania korupcie
Zriadiť komplexné zasadnutie pre odhaľovanie a monitorovanie korupcie.
8.6.2.1 Filtrovanie čísel chýb poškodenia (823, 824, 825)
Vytvoriť tarzasadnutie zamerané na ukazovatele korupcie:
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 Nastavenie vhodných úrovní závažnosti
Zahrnúť chyby s vysokou závažnosťou, ktoré môžu naznačovať poškodenie:
WHERE (
[severity] >= (20)
OR [error_number] IN (823, 824, 825)
)
Závažnosť 20 a vyššia označuje problémy na úrovni systému, ktoré často súvisia s korupciou.
8.6.2.3 Konfigurácia súboru udalostí Tarzískať upozornenia
Ukladanie udalostí poškodenia na účely analýzy a upozornení:
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 údajov o udalostiach korupcie
Extrahovať a interpretovať udalosti súvisiace s korupciou zo zachytených údajov.
8.6.3.1 Identifikácia podozrivých stránok
Dotaz pre udalosti 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 Extrakcia podrobností o chybe a kontextu
Analyzujte udalosti hlásené chybami, či sa v nich nachádzajú vzorce poškodenia:
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 Integrácia s DBCC CHECKDB
Použite údaje o rozšírených udalostiach ako pomôcku DBCC CHECKDB exekúcia.
8.6.4.1 Spúšťanie DBCC CHECKDB na základe udalostí
Keď sa zistia udalosti poškodenia, spustite príkaz DBCC CHECKDB pre komplexné overenie:
-- After detecting corruption events, run DBCC CHECKDB
DBCC CHECKDB ('YourDatabaseName') WITH NO_INFOMSGS, ALL_ERRORMSGS;
Rozšírené udalosti poskytujú včasné varovanie, zatiaľ čo DBCC CHECKDB vykonáva dôkladné overenie.
8.6.4.2 Automatizované pracovné postupy reakcie na korupciu
Implementujte automatizované odpovede monitorovaním súboru udalostí:
- Konfigurácia SQL Server Úloha agenta na pravidelné dotazovanie súboru udalostí monitorovania poškodenia.
- Keď sa zistia udalosti poškodenia, spustite príkaz DBCC CHECKDB na postihnutej databáze.
- Posielajte e-mailové upozornenia správcom databáz s podrobnosťami o udalostiach a výsledkami DBCC CHECKDB.
- Zaznamenávajte zistenia do centralizovanej monitorovacej tabuľky na účely analýzy trendov.
8.6.4.3 Vyváženie proaktívneho monitorovania s výkonom
Rozšírené udalosti ponúkajú detekciu poškodenia s nízkou réžiou v porovnaní s častým vykonávaním DBCC CHECKDB:
- Nepretržite spúšťajte rozšírené udalosti na detekciu poškodenia v reálnom čase
- Vykonajte DBCC CHECKDB iba vtedy, keď sa zobrazia indikátory poškodenia
- Naplánujte pravidelné DBCC CHECKDB počas údržbových okien
- Použitie rozšírených udalostí na identifikáciu databáz vyžadujúcich okamžitú pozornosť
Tento prístup poskytuje proaktívne monitorovanie bez významnej spotreby zdrojov spôsobenej neustálymi kontrolami integrity.
8.6.4.4 Oprava poškodenej databázy
Ak sa v databáze zistia poškodenia, môžete použiť príkaz DBCC CHECKDB na opravu menších poškodení. Ak to zlyhá, môžete skúsiť nástroj tretej strany. Nástroj na obnovu databázy SQL, ktorá vo všeobecnosti ponúka vyššiu mieru obnovy pri vážne poškodených databázach.
9. Rozšírené udalosti v rozsahu servera vs. rozšírené udalosti v rozsahu databázy
9.1 Relácie udalostí v rozsahu servera
Relácie v rozsahu servera monitorujú aktivitu v celom SQL Server inštancia. Tieto relácie sa vytvárajú pomocou klauzuly ON SERVER a pretrvávajú v hlavnej databáze.
CREATE EVENT SESSION [ServerWideMonitoring] ON SERVER
ADD EVENT sqlserver.sql_statement_completed
ADD TARGET package0.event_file(
SET filename=N'C:\XEvents\ServerWide.xel'
);
Relácie s rozsahom servera zachytávajú udalosti zo všetkých databáz a sú vhodné na monitorovanie na úrovni inštancie.
9.2 Relácie udalostí s rozsahom databázy (databáza Azure SQL)
Relácie s rozsahom databázy sú obmedzené na jednu databázu a používajú sa predovšetkým v databáze Azure SQL, kde je prístup na úrovni servera obmedzený:
CREATE EVENT SESSION [DatabaseSpecificMonitoring] ON DATABASE
ADD EVENT sqlserver.sql_statement_completed
ADD TARGET package0.event_file(
SET filename=N'DatabaseMonitoring.xel'
);
V databáze Azure SQL sú súbory udalostí uložené v úložisku Azure Blob Storage, a nie v lokálnych súborových systémoch.
9.3 Rozdiely a prípady použitia
Relácie s rozsahom servera poskytujú komplexné monitorovanie všetkých databáz, ale vyžadujú zvýšené oprávnenia. Relácie s rozsahom databázy ponúkajú izoláciu a sú vhodné pri monitorovaní konkrétnych aplikácií alebo nájomníkov.
Relácie s rozsahom servera používajte na centralizované monitorovanie, riešenie problémov s výkonom v databázach a audit zabezpečenia. Relácie s rozsahom databázy používajte v databáze Azure SQL, prostrediach s viacerými nájomníkmi alebo pri delegovaní zodpovedností za monitorovanie na aplikačné tímy.
10. Rozšírené udalosti v databáze Azure SQL
10.1 Úvahy špecifické pre Azure
Databáza Azure SQL implementuje rozšírené udalosti s niekoľkými rozdielmi oproti lokálnym platformám. SQL ServerRelácie sú predvolene obmedzené na databázu a úložisko súborov udalostí používa úložisko Azure Blob Storage namiesto lokálnych súborových systémov.
Autentifikácia do úložiska Azure Blob Storage vyžaduje token SAS nakonfigurovaný v súbore udalostí. tarzískať. Pripájacie reťazce odkazujú na účet úložiska a kontajner, v ktorom sú uložené súbory udalostí.
10.2 k dispozícii Tardostane sa do Azure
Databáza Azure SQL podporuje tieto rozšírené udalosti tardostane:
- event_file: Zapisuje do úložiska Azure Blob Storage
- ring_buffer: Úložisko založené na pamäti s rovnakým správaním ako lokálne úložisko
- event_counter: Počíta výskyty udalostí
Súbor_udalosti tarvyžaduje konfiguráciu s prihlasovacími údajmi Azure Blob Storage:
ADD TARGET package0.event_file(
SET filename=N'https://yourstorageaccount.blob.core.windows.net/container/EventFile.xel'
)
10.3 Vytváranie relácií s rozsahom databázy
Vytvorenie relácie v databáze 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;
Relácie s rozsahom databázy v Azure sa správajú podobne ako relácie s rozsahom servera v lokálnych platformách, ale s rozsahom obmedzeným na aktuálnu databázu.
11. Najlepšie postupy a optimalizácia výkonu
11.1 Minimalizácia vplyvu na výkon
Rozšírené udalosti sú navrhnuté pre minimálne režijné náklady, ale nesprávna konfigurácia môže ovplyvniť výkon. Postupujte podľa týchto pokynov:
- Namiesto zachytávania všetkého použite na filtrovanie udalostí špecifické predikáty.
- Vyhnite sa zhromažďovaniu nepotrebných akcií, ktoré zvyšujú réžiu spracovania
- Vyberte si vhodné tarna základe potrieb uchovávania údajov
- Nastavte primerané veľkosti vyrovnávacích pamätí a latencie odoslania
- Monitorovanie spotreby zdrojov relácie pomocou DMV
11.2 Výber správnych udalostí a filtrov
Vyberte udalosti, ktoré priamo riešia vaše monitorovacie ciele. Vyhýbajte sa udalostiam s vysokou frekvenciou, pokiaľ to nie je nevyhnutné, a vždy používajte predikáty na zníženie objemu údajov.
Napríklad namiesto zachytávania všetkých udalostí sql_statement_completed filtrujte podľa konkrétnych databáz alebo prahových hodnôt trvania:
WHERE (
[sqlserver].[database_name] = N'ProductionDB'
AND [duration] > 1000000
)
11.3 Tarzískať Pokyny pre výber
Vybrať tarna základe vašich analytických požiadaviek:
- Použite event_file na podrobnú historickú analýzu a dlhodobé uchovávanie
- Použite ring_buffer na monitorovanie v reálnom čase s minimálnym dopadom na I/O
- Použite event_counter, keď záleží iba na frekvencii
- Použitie histogramu na analýzu rozdelenia
- Použitie pair_matchingu na analýzu korelovaných udalostí
11.4 Odporúčania pre konfiguráciu relácie
Nakonfigurujte relácie s príslušnými limitmi zdrojov:
- Nastavte MAX_MEMORY na základe očakávaného objemu udalostí a serverových zdrojov
- Pre minimálnu réžiu v m použite ALLOW_SINGLE_EVENT_LOSSost scenáre
- Nastavte MAX_DISPATCH_LATENCY na vyváženie potrieb v reálnom čase s výkonom
- Používanie rozdelenia pamäte PER_CPU na viacprocesorových systémoch
- Vyhnite sa STARTUP_STATE=ON, pokiaľ nie je potrebné nepretržité monitorovanie
11.5 Správa veľkosti a uchovávania súborov udalostí
Nakonfigurujte prenos súborov, aby ste zabránili neobmedzenému využitiu disku:
ADD TARGET package0.event_file(
SET filename=N'C:\XEvents\Session.xel',
max_file_size=(100),
max_rollover_files=(10)
)
Táto konfigurácia uchováva približne 1 GB údajov o udalostiach (10 súborov × 100 MB). Upravte podľa svojich požiadaviek na uchovávanie a dostupného úložiska.
12. Riešenie problémov s rozšírenými udalosťami
12.1 Bežné problémy a riešenia
Medzi bežné problémy s rozšírenými udalosťami patria relácie, ktoré nezaznamenávajú údaje, zníženie výkonu, tarvyskytnúť problémy a neočakávané správanie relácie.
12.2 Relácia nezaznamenáva údaje
Ak relácia nezachytáva očakávané udalosti:
- Overte, či je relácia spustenátarvykonané pomocou sys.dm_xe_sessions.
- Skontrolujte predikáty, aby ste sa uistili, že nefiltrujú všetky udalosti.
- Potvrďte, že udalosti sa spúšťajú podľa temparardôkladné odstránenie filtrov.
- Skontrolujte povolenia, aby ste sa uistili, že máte prístup k zobrazeniu údajov relácie.
- Skontrolujte, či tarkonfigurácia get je správna a zapisovateľná.
SELECT name, create_time FROM sys.dm_xe_sessions WHERE name = 'YourSessionName';
12.3 Zhoršenie výkonu
Ak rozšírené udalosti spôsobujú problémy s výkonom:
- Pridajte predikáty na zníženie objemu udalostí.
- Odstráňte nepotrebné akcie, ktoré vyberajú doplnkové poplatkytary údajov.
- Zvýšte hodnotu MAX_DISPATCH_LATENCY pre zníženie frekvencie zápisu.
- Zmeňte EVENT_RETENTION_MODE na ALLOW_SINGLE_UDALOSŤ_STRATA.
- Pre udalosti s vysokou frekvenciou zvážte použitie ring_buffer namiesto event_file.
12.4 Súbor Tarzískať problémy
rezeň tarproblémy sa často týkajú oprávnení alebo miesta na disku:
- Overte SQL Server servisný účet má oprávnenia na zápis do tarzískať adresár.
- Uistite sa, že je k dispozícii dostatok miesta na disku.
- Skontrolujte, či zadaná cesta existuje a je prístupná.
- Ak sa súbory nepresúvajú podľa očakávania, skontrolujte konfiguráciu prenosu súborov.
12.5 Ladenie pomocou systémových zobrazení
Na diagnostiku problémov s rozšírenými udalosťami použite DMV:
-- 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émy
13.1 Vytváranie vlastných balíčkov udalostí
Pokročilí používatelia si môžu vytvoriť vlastné balíčky udalostí na rozšírenie SQL Server Rozšírená funkcionalita udalostí. Vyžaduje si to vývoj v jazyku C++ a integráciu s SQL Server rámec rozšíriteľnosti.
Zákazkové balíky umožňujú monitorovanie udalostí špecifických pre aplikáciu alebo integráciu monitorovacích systémov tretích strán s infraštruktúrou rozšírených udalostí.
13.2 Šablóny relácií udalostí
SSMS poskytuje vstavané šablóny pre bežné scenáre monitorovania. Prístup k šablónam pri vytváraní nových relácií prostredníctvom sprievodcu:
- V dialógovom okne Nová relácia kliknite na tlačidlo šablóna rozbaľovacej ponuky.
- Vyberte si z dostupných šablón, ako napríklad Sledovanie podrobností dotazov alebo Stav systému.
- Upravte šablónu tak, aby vyhovovala vašim špecifickým požiadavkám.
13.3 Integrácia s monitorovacími riešeniami
Rozšírené údaje o udalostiach môžu slúžiť ako zdroj informácií pre podnikové monitorovacie riešenia:
- Export údajov o udalostiach do centralizovaných systémov protokolovania
- Analyzovať súbory udalostí a načítať údaje do monitorovacích databáz
- Vytvorte si vlastné dashboardy pomocou nástrojov BI
- Spúšťanie upozornení na základe špecifických vzorcov udalostí
- koreluje SQL Server udalosti s metrikami aplikácií a infraštruktúry
13.4 Automatizácia a plánovanie
Automatizujte správu rozšírených udalostí pomocou SQL Server Zástupca:
- Vytvoriť úlohy natarzastaviť/zastaviť relácie počas určitých časových okien
- Naplánovať analýzu a reportovanie súborov udalostí
- Implementujte politiky uchovávania údajov archiváciou alebo odstránením starých súborov udalostí
- Automatizujte reakciu na zistené podmienky, ako sú problémy s výkonom alebo bezpečnostné udalosti
14. Migrácia z SQL Server Profiler
14.1 SQL Server Mapovanie udalostí profilera na rozšírené udalosti
Spoločnosť Microsoft poskytuje mapovanie medzi SQL Server Profiler udalosti a rozšírené udalosti. Medzi bežné mapovania patria:
- SQL:BatchCompleted -> sql_batch_completed
- SQL:Dávkytarting -> sql_batch_starting
- SQL:StmtCompleted -> sql_statement_completed
- SQL:StmtStarting -> sql_statement_starting
- Graf zablokovania -> xml_deadlock_report
- Prihlásenie do auditu -> prihlásiť sa
- Odhlásenie z auditu -> odhlásiť sa
14.2 Konverzia definícií sledovania
Konvertovať existujúce SQL Server Profiler sleduje relácie rozšírených udalostí identifikáciou ekvivalentných udalostí a konfiguráciou vhodných predikátov. SSMS poskytuje pomoc s bežnými konverziami.
Skontrolujte filtre sledovania a preveďte ich na predikáty rozšírených udalostí. Akcie v rozšírených udalostiach nahradia stĺpce sledovania z SQL Server Profiler.
14.3 Porovnanie výkonu
Rozšírené udalosti poskytujú výrazne lepší výkon ako SQL Server Profiler. Benchmarkové štúdie ukazujú, že rozšírené udalosti spotrebúvajú menej cyklov CPU a majú menší vplyv na priepustnosť transakcií.
Rozšírené udalosti používajú asynchrónne spracovanie a optimalizovanú správu pamäte, zatiaľ čo SQL Server Profiler sa spolieha na synchrónne zachytávanie udalostí, ktoré sa blokuje, kým sa nedokončí spracovanie sledovania.
15. Záver
15.1 Súhrn kľúčových pojmov
SQL Server Rozšírené udalosti poskytujú výkonný a ľahký rámec na monitorovanie a riešenie problémov SQL ServerArchitektúra pozostáva z udalostí, akcií, predikátov, targets a relácie, ktoré spolupracujú na zachytení relevantnej aktivity servera.
Relácie je možné vytvárať pomocou SSMS alebo T-SQL, čo ponúka flexibilitu pre ad-hoc riešenie problémov aj automatizované monitorovanie. tarTypy get podporujú rôzne analytické prístupy, od monitorovania v reálnom čase s ring_buffer až po historickú analýzu s event_file.
Rozšírené udalosti poskytujú lepší výkon v porovnaní s SQL Server Profiler a zároveň poskytuje komplexnejšie možnosti monitorovania. Systém umožňuje správcom databáz a vývojárom diagnostikovať problémy, optimalizovať výkon, zvýšiť bezpečnosť a udržiavať súlad s predpismi.
15.2 Ďalšie kroky a ďalšie zdroje
Ak chcete pokračovať vo svojom vývoji SQL Server Odbornosť XEvents:
- Implementujte rozšírené udalosti v testovacích prostrediach, aby ste získali praktické skúsenosti
- Prečítajte si dokumentáciu spoločnosti Microsoft, kde nájdete kompletné katalógy udalostí a podrobný prehľad syntaxe.
- pripojiť SQL Server komunitné fóra, kde sa môžete učiť zo skúseností iných
- Preskúmajte pokročilé scenáre, ako sú vlastné balíky a integrácia s monitorovacími platformami
- Vyvinúť knižnicurary šablón relácií pre bežné scenáre monitorovania
16 Často kladené otázky
Otázka: Čo sú SQL Server Predĺžené udalosti?
A: SQL Server Extended Events je ľahký systém monitorovania výkonu integrovaný do SQL Server Databázový engine, ktorý zachytáva podrobné informácie o prevádzke servera s minimálnymi réžiami.
Otázka: V čom sa rozšírené udalosti líšia od SQL Server Profiler?
A: Rozšírené udalosti poskytujú lepší výkon, nižšie réžijné náklady a flexibilnejšiu konfiguráciu ako SQL Server Profiler. SQL Server Profiler je zastaraný a spoločnosť Microsoft odporúča používať rozšírené udalosti pre všetky úlohy monitorovania.
Otázka: Môžu mať rozšírené udalosti vplyv SQL Server výkon?
A: Pri správnej konfigurácii s vhodnými predikátmi a limitmi zdrojov majú rozšírené udalosti minimálny vplyv na výkon. Nesprávna konfigurácia bez filtrovania môže ovplyvniť výkon.
Otázka: Aké povolenia sú potrebné na vytvorenie relácií rozšírených udalostí?
A: Pre relácie s rozsahom servera potrebujete povolenie ALTER ANY EVENT SESSION alebo povolenie CONTROL pre databázu pre relácie s rozsahom databázy.
Otázka: Ako si môžem zobraziť údaje o rozšírených udalostiach?
A: Použite SQL Server Prehliadač živých dát v Management Studio, dotazovanie súborov udalostí pomocou sys.fn_xe_file_target_read_file alebo dotazovanie údajov z vyrovnávacej pamäte kruhu prostredníctvom DMV.
Otázka: Dokážu rozšírené udalosti zistiť poškodenie databázy?
A: Áno, rozšírené udalosti dokážu zachytiť chyby súvisiace s poškodením (823, 824, 825) a udalosti podozrivých stránok, čím poskytujú včasné varovanie pred potenciálnymi problémami s poškodením.
Otázka: Aký je rozdiel medzi udalosťami, činmi a predikátmi?
A: Udalosti sú udalosti, ktoré chcete monitorovať. Akcie pridávajú doplnok.tarinformácie o y k zachyteným udalostiam. Predikáty filtrujú udalosti na základe podmienok, aby sa znížil objem údajov.
Otázka: Ako môžem monitorovať dotazy z konkrétnych aplikácií alebo databáz?
A: V konfigurácii udalostí použite predikáty na filtrovanie podľa názvu_database, názvu_client_app alebo iných relevantných polí.
Otázka: Čo tarMám použiť pre rozšírené udalosti?
A: Použite event_file na trvalé ukladanie a historickú analýzu, ring_buffer na monitorovanie v reálnom čase s nízkou réžiou, event_counter na jednoduché sledovanie frekvencie a histogram na analýzu distribúcie.
Otázka: Sú v databáze Azure SQL k dispozícii rozšírené udalosti?
A: Áno, databáza Azure SQL podporuje rozšírené udalosti s rozsahom databázy so súbormi udalostí uloženými v úložisku Azure Blob Storage.
Otázka: Ako vyriešim problém s reláciou rozšírených udalostí, ktorá nezaznamenáva údaje?
A: Overte, či je relácia spustenátarTed, skontroluj, či predikáty nefiltrujú všetky udalosti, potvrď tarzískať konfiguráciu a skontrolovať povolenia pomocou systémových DMV.
Otázka: Môžem automatizovať správu rozšírených udalostí?
Odpoveď: Áno, použite SQL Server Úlohy agentov pre starzastavovať/ukončovať relácie, analyzovať súbory udalostí, implementovať politiky uchovávania údajov a reagovať na zistené podmienky.
Referencie
- Rýchlo S.tart: Rozšírené udalosti v SQL Server – Microsoft Learn
- Prehľad rozšírených udalostí – Microsoft Learn
- SQL Server Rozšírené relácie udalostí – Microsoft Learn
- Tardostane pre rozšírené udalosti v SQL Server – Microsoft Learn
- SQL Server Rozšírený nástroj udalostí – Microsoft Learn
- SQL Server Profiler: Kompletný sprievodca
- DBCC CHECKDB: Kompletný sprievodca
- DataNumen SQL Recovery
O autorovi
Yuan Sheng je seniorný správca databáz (DBA) s viac ako 10-ročnými skúsenosťami v SQL Server prostredia a správa podnikových databáz. Úspešne vyriešil stovky scenárov obnovy databáz vo finančných službách, zdravotníctve a výrobných organizáciách.
Yuan sa špecializuje na SQL Server obnova databázy, riešenia s vysokou dostupnosťoua optimalizáciu výkonu. Jeho rozsiahle praktické skúsenosti zahŕňajú správu databáz s veľkosťou viac terabajtov, implementáciu Skupiny dostupnosti vždy zapnutéa vývoj automatizovaných stratégií zálohovania a obnovy pre kritické obchodné systémy.
Vďaka svojim technickým znalostiam a praktickému prístupu sa Yuan zameriava na vytváranie komplexných príručiek, ktoré pomáhajú správcom databáz a IT profesionálom riešiť zložité SQL Server efektívne zvláda výzvy. Udržiava si prehľad o najnovších SQL Server vydania a vyvíjajúce sa databázové technológie spoločnosti Microsoft, pričom pravidelne testuje scenáre obnovy, aby sa zabezpečilo, že jeho odporúčania odrážajú osvedčené postupy z reálneho sveta.
Máte otázky o SQL Server obnovenie alebo potrebujete ďalšie pokyny na riešenie problémov s databázou? Yuan víta spätnú väzbu a návrhy na zlepšenie týchto technických zdrojov.

















