Oszd meg most:
Tartalomjegyzék elrejtése
8. Gyakorlati felhasználási esetek és példák

1. Bevezetés

1.1 Mik azok SQL Server Kiterjesztett események?

SQL Server Az Extended Events egy könnyű teljesítményfigyelő rendszer, amely lehetővé teszi a rendszergazdák és a fejlesztők számára, hogy részletes szerveraktivitási adatokat gyűjtsenek és elemezzenek. Ez a rendszer integrálva van a következőbe: SQL Server Adatbázismotor, amely átfogó betekintést nyújt mind a normál működésbe, mind a hibaelhárítási forgatókönyvekbe.

1.2 Miért érdemes kiterjesztett eseményeket használni a monitorozáshoz?

SQL Server A kiterjesztett események számos meggyőző előnyt kínálnak az adatbázis-monitorozás és a hibaelhárítás terén:

  • Minimális teljesítményhatás a könnyű architektúrának köszönhetően
  • Részletes vezérlés az adatgyűjtés és az eseményszűrés felett
  • Testreszabható adatgyűjtés, az adott monitorozási igényekhez igazítva
  • Lehetőség események egyidejű rögzítésére több csomagból
  • Rugalmas szűrési lehetőségek a releváns műveletekre való összpontosításhoz
  • Éles rendszerfelügyelet támogatása a felhasználói élmény romlása nélkül
  • Átfogó teljesítménymutatók nyomon követése
  • Speciális diagnostIC-képességek a hibaelhárításhoz
  • Auditnapló karbantartása a megfelelőségi követelményekhez
  • Valós idejű és historikus adatelemzési lehetőségek

1.3 Kiterjesztett események vs. SQL Server Profiler

Míg SQL Server Profiler Míg a Microsoft egy hagyományos monitorozó eszköz volt, az MS SQL Extended Events hatékonyabb alternatívát kínál. Az Extended Events kevesebb rendszererőforrást fogyaszt, és jobb skálázhatóságot kínál az éles környezetekben.

SQL Server A Profiler elavult, és a Microsoft azt javasolja, hogy minden monitorozási tevékenységhez térjen át a kiterjesztett eseményekre.

2. A kibővített események architektúrájának megértése

2.1 Kiterjesztett eseménymotor-összetevők

A kibővített események motorja több alapvető összetevőből áll, amelyek együttműködve rögzítik, feldolgozzák és tárolják az eseményadatokat. Ezen összetevők megértése segít hatékony monitorozási megoldások tervezésében.

  • Diszpécser: A diszpécser komponens koordinálja az események áramlását az eseményforrásoktól a kiterjesztett események motorjáig. Amikor egy esemény aktiválódik, a diszpécser fogadja az értesítést, és továbbítja azt az adott eseménytípusra feliratkozott aktív munkamenetekhez.
  • puffer: Pufferek tempójararaz eseményadatokat a memóriába írás előtt tárolja tarEz a pufferelési mechanizmus az I/O műveletek csökkentésével javítja a teljesítményt. A pufferméret és a kezelési beállítások konfigurálhatók a memóriahasználat és az adatrögzítési követelmények egyensúlyba hozásához.
  • Ülés: Egy munkamenet határozza meg az eseménymonitorozás hatókörét. Meghatározza, hogy mely eseményeket kell rögzíteni, milyen műveleteket kell végrehajtani, mely predikátumokat kell alkalmazni, és hol kell tárolni az eredményeket. A munkamenetek létrehozhatók, módosíthatók,...tarted, és magától megállt.
  • Tarpéldány lekérése: TarA get példányok a rögzített eseményadatok tárolási célhelyeit jelölik. Minden munkamenet egy vagy több helyre írhat. tarlekérések, például fájlok, gyűrűs pufferek vagy számlálók. Tarlekéri a folyamatot, és megőrzi az eseményinformációkat későbbi elemzés céljából.

2.2 Rendezvénycsomagok

SQL Server A kiterjesztett események csomagokba rendezik a funkciókat. Minden csomag kapcsolódó eseményeket, műveleteket, típusokat, predikátumokat és targets. A gyakori csomagok közé tartozik az sqlserver, az sqlos és a package0.

  • Az sqlserver csomag adatbázis-specifikus eseményeket, például lekérdezéseket és tranzakciókat biztosít.
  • Az SQLOS csomag operációsrendszer-eseményeket tartalmaz.
  • A package0 általános célú funkciókat kínál, amelyek minden csomagban használhatók.

2.3 Eseménytípusok és mezők

Az események a következő eseményeket jelképezik: SQL Server amelyeket figyelni szeretne. Minden eseménytípus előre definiált mezőkkel rendelkezik, amelyek releváns információkat rögzítenek. Például az sql_statement_completed esemény mezőket tartalmaz az időtartamra, a CPU-időre, az olvasásokra és az írásokra vonatkozóan.

Az események lehetnek szinkronok vagy aszinkronok. A szinkron események a művelet során, míg az aszinkron események a befejezésük után aktiválódnak. Az események jellemzőinek megértése segít a monitorozási igényeinek megfelelő események kiválasztásában.

2.4 részvény

A műveletek kiegészítést adnak hozzátary információkat a rögzített eseményekhez. Amikor egy esemény aktiválódik, a kapcsolódó műveletek végrehajtódnak további kontextus, például SQL szöveg, munkamenet-azonosító vagy hívásverem-információk gyűjtéséhez.

A gyakori műveletek közé tartozik az sql_text a lekérdezési utasítások rögzítéséhez, a database_name az adatbázis azonosításához és a client_h.ostnév a forráskiszolgáló nyomon követéséhez. A műveletek alapvető kontextust biztosítanak a hibaelhárításhoz és az elemzéshez.

2.5 Tarjelentkeznek

Tarmeghatározza, hogy hol és hogyan tárolódnak az eseményadatok. SQL Server A kiterjesztett események több funkciót is támogatnak. tartípusokat kaphat, beleértve:

  • event_file lemezes tároláshoz, amely állandó tárhelyet biztosít a részletes elemzésekhez
  • ring_buffer memória-alapú adatmegőrzéshez, amely gyors hozzáférést biztosít a legutóbbi eseményekhez minimális terheléssel
  • eseményszámláló az egyszerű számláláshoz
  • hisztogram a csoportosításhoz
  • párosítás a kapcsolódó események korrelálásához

2.6 Predikátumok (szűrők)

A predikátumok megadott feltételek alapján szűrik az eseményeket, csökkentve a rögzített adatok mennyiségét. Szűrhet adatbázisnév, alkalmazásnév, munkamenet-azonosító, időtartam-küszöbértékek vagy bármilyen eseménymező értéke alapján.

A hatékony predikátumhasználat minimalizálja a teljesítményre gyakorolt ​​hatást azáltal, hogy csak a releváns eseményeket rögzíti. Az összetett predikátumok logikai operátorok segítségével több feltételt kombinálnak a pontos szűrési feltételek létrehozásához.

3. Kiterjesztett eseménymunkamenet-állapotok és életciklus

3.1 Munkamenet-állapotok: LÉTREHOZÁS, MÓDOSÍTÁS és ELTÖLTÉS

A kibővített események különböző állapotokon keresztül haladnak:

  • A CREATE EVENT SESSION utasítás egy új munkamenetet definiál, de nem tartalmazza a munkamenetet.tart. A munkamenet leállított állapotban van, amíg explicit módon aktiválásra nem kerül.
  • Az ALTER EVENT SESSION utasítás módosítja a munkamenet konfigurációját, vagy megváltoztatja annak állapotát stopped és s között.tarted.
  • A DROP EVENT SESSION utasítás teljes mértékben eltávolítja a munkamenet-definíciót a szerverről.

3.2 A foglalkozás tartalma és jellemzői

Minden munkamenet események, műveletek, tarlekérések és predikátumok. A munkameneteknek implicit határaik vannak, amelyek meghatározzák a hatókörüket és a viselkedésüket. A konfigurációs beállítások szabályozzák a memóriafoglalást, az események megőrzését és a küldési késleltetést.

A munkamenet jellemzői közé tartozik, hogy azok megmaradnak-e a szerver különböző erőforrásai között.tarts, maximális memóriafoglalás, és hogyan kezelik a memórianyomást. Ezek a beállítások jelentősen befolyásolják a munkamenet viselkedését és az erőforrás-fogyasztást.

3.3 Munkamenet-határok és csomagok

A munkamenet-határok események közötti kapcsolatokat határozzák meg, tarlekérések és csomagok. Az egyik csomagból származó események egy másik csomagból származó műveleteket indíthatnak el, rugalmasságot biztosítva az adatgyűjtési stratégiákban.

A csomagkapcsolatok lehetővé teszik több forrásból származó események egyetlen munkameneten belüli kombinálását. Ez a képesség átfogó monitorozási forgatókönyveket tesz lehetővé, amelyek különböző SQL Server alrendszerek.

4. Kiterjesztett esemény-munkamenetek létrehozása SSMS használatával

4.1 Előfeltételek és beállítás

Létrehozás előtt SQL Server Kiterjesztett események munkamenetei esetén győződjön meg arról, hogy rendelkezik a megfelelő engedélyekkel. Kiszolgáló hatókörű munkamenetekhez ESEMÉNYMUNKAMENET MÓDOSÍTÁSA engedélyre, adatbázis hatókörű munkamenetekhez pedig az adatbázis CONTROL engedélyére van szükség.

Ellenőrizze ezt SQL Server A Management Studio telepítve van és csatlakoztatva van a tarpéldány beszerzése. Ismerkedjen meg a monitorozási követelményekkel, és azonosítsa, hogy mely események és tara legjobban megfelel az igényeidnek.

4.2 Kiterjesztett események elérése az Objektumkezelőben

Az SSMS Kiterjesztett események felületének eléréséhez kövesse az alábbi lépéseket:

  1. Nyisd ki SQL Server Management Studio és csatlakozzon a SQL Server példa.
  2. Az Objektumkezelőben bontsa ki Menedzsment -> Bővített események.
  3. A Kiterjesztett események csomópont tartalmazza Sessions és a Csomagok mappák a monitorozási konfigurációk kezeléséhez.

A Bővített események felületének elérése itt: SQL Server Menedzsment Stúdió.

4.3 Új munkamenet létrehozása

Új munkamenet létrehozásához:

    1. Kattintson a jobb gombbal a Sessions mappa alatt Bővített események.
    2. választ Új munkamenet a konfigurációs párbeszédpanel megnyitásához. A következő tartalom ezt a metódust fogja használni egy új munkamenet létrehozásához.

Hozzon létre egy új, kibővített eseményekből álló munkamenetet a következőben: SQL Server Menedzsment Stúdió.

Megjegyzés: A Új munkamenet varázsló vezetettebb élményekhez is elérhető.

4.3.1 Általános oldalkonfiguráció

A Általános oldalon konfigurálja az alapvető munkamenet-tulajdonságokat:

  1. Írjon be egy munkamenetnevet a Munkamenet neve mező. Használjon leíró neveket, amelyek jelzik a monitorozás célját.
  2. Opcionálisan válassza ki Staraz esemény munkamenete az s szerverentarcső az automatikus munkamenet-aktiválás engedélyezéséhez.
  3. Az alapértelmezett munkamenet-sablon a következő: ÜresHasználhat más sablonokat is, ha előre definiált konfigurációt használ.

A Kiterjesztett események munkamenetének általános oldala itt: SQL Server Menedzsment Stúdió.

4.3.2 Események oldal beállításai

A Események oldalon kiválaszthatja, hogy mely eseményeket szeretné figyelni:

  1. Válassza ki a Események oldal balról Válasszon egy oldalt panel.
  2. A Eseménykönyvtárrary, böngésszen az elérhető események között, vagy használja a keresési funkciót.
  3. Események szűrése kulcsszavak, például az „sql_statement_completed” beírásával a releváns események megtalálásához.
  4. Válassza ki a kívánt eseményt, például az sql_statement_completed eseményt.
  5. Kattintson a jobbra mutató nyílra az esemény áthelyezéséhez a Kiválasztott események lista.

A Kiterjesztett események munkamenet Események oldala itt: SQL Server Menedzsment Stúdió.

4.3.3 Adattárolási konfiguráció

A Adattárolás Az oldal meghatározza, hogy hol tárolódnak az eseményadatok:

  1. Válassza ki a Adattárolás oldal balról Válasszon egy oldalt panel.
  2. A Tarjelentkeznek területet, válasszon egy tarSzerezd meg a típust a legördülő menüből.

A Kiterjesztett események munkamenetének adattárolási oldala a következőben: SQL Server Menedzsment Stúdió.

(1) eseményfájl Tarkap

Az eseményfájl tarA get parancs .xel kiterjesztésű lemezfájlokba menti az adatokat:

  1. választ eseményfájl tól tartípus lekérése legördülő menü.
  2. Adja meg a fájl elérési útját, például C:\temp\YourSession_Target.xel.
  3. Konfigurálja az áthelyezési beállításokat a lemezterület kezeléséhez a maximális fájlméret és a fájlok számának beállításával.
  4. A tarA get folyamatosan írja az eseményeket, amíg a munkamenet le nem áll, vagy a tárolási korlátok el nem érik.

Állítsa be a munkamenetet taraz event_file eléréséhez az SSMS-ben

(2) gyűrűs_puffer Tarkap

A gyűrűpuffer tarA get tárolja az eseményeket a memóriában a lemez I/O nélküli gyors hozzáférés érdekében:

  1. választ gyűrűs_puffer mint a tartípust kap.
  2. Konfigurálja a puffer maximális memória-foglalását.
  3. Értsd meg, hogy a régebbi események elvesznek, amikor a puffer megtelik, így ez alkalmas a legutóbbi tevékenységek figyelésére.

Állítsa be tarring_buffer elérése a kiterjesztett események munkamenetéhez itt: SQL Server Menedzsment Stúdió.

(3) eseményszámláló Tarkap

Az eseményszámláló tarA get függvény egyszerűen számolja az események előfordulását részletes adatok tárolása nélkül. Ez minimális többletterhelést jelent, ha csak a gyakorisági információkra van szükség.

Állítsa be taraz eseményszámláló lekérése a kiterjesztett események munkamenetéhez itt: SQL Server Menedzsment Stúdió.

(4) hisztogram Tarkap

A hisztogram tarA get függvény egy megadott mezőérték alapján csoportosítja az eseményeket, eloszlási statisztikákat hozva létre. Ez hasznos a gyakori minták vagy a nagy gyakoriságú értékek azonosításához.

Állítsa be tara kiterjesztett események munkamenetének hisztogramjához juthat el a következőben: SQL Server Menedzsment Stúdió.

(5) párosítás Tarkap

A párosítás tarKorrelált kapcsolódó eseményeket kaphat, mint például a zár megszerzése és feloldása. Ez lehetővé teszi a párosított műveletek és azok időbeli kapcsolatainak elemzését.

Állítsa be a munkamenetet tarpair_matching eléréséhez az SSMS-ben

4.3.4 Speciális beállítások

A Részletes oldal munkamenet-szintű konfigurációs beállításokat kínál:

  1. Válassza ki a Részletes oldal balról Válasszon egy oldalt panel.
  2. konfigurálása Eseménymegőrzési mód hogy szabályozza, hogyan kezeli a rendszer az eseményeket memórianyomás alatt.
  3. Készlet Maximális küldési késleltetés a valós idejű feldolgozás és a rendszerteljesítmény egyensúlyának megteremtése érdekében.
  4. konfigurálása Maximális memóriaméret és a Maximális eseményméret a monitorozási igényeid alapján.
  5. választ Memóriaparticionálási mód optimalizálni egy- vagy többprocesszoros környezetekhez.

A munkamenet speciális oldala itt: SQL Server Menedzsment Stúdió.

4.4 Eseményszűrők (predikátumok) konfigurálása

A predikátumok az események meghatározott kritériumok szerinti szűrésével csökkentik az adatmennyiséget. A szűrők konfigurálásához:

  1. A Események oldalon válassza ki a szűrni kívánt eseményt, például az „sql_statement_completed” eseményt.
  2. Kattints konfigurálása az eseménykonfigurációs párbeszédablak megnyitásához.
    Kiterjesztett események munkamenet eseményének konfigurálása a következőben: SQL Server Menedzsment Stúdió.
  3. Válassza ki a Szűrő (predikátum) Tab.
  4. A Mező legördülő menüből válassza ki a szűrni kívánt mezőt, például az időtartamot.
  5. Válasszon ki egy Operátor, például „>”.
  6. Írja be a szűrőt Érték:, például 1000000 (1 másodperc).
  7. Szükség esetén adjon hozzá további feltételeket.

Konfigurálja egy esemény szűrőit (predikátumait).

4.5 Műveletek és eseménymezők kiválasztása

Minden eseményhez kiválaszthatja a gyűjtendő adatokat:

  1. A Események oldalon válassza ki azt az eseményt, amelyhez ki szeretné választani az adatokat, például az „sql_statement_completed” eseményt.
  2. Kattints konfigurálása az eseménykonfigurációs párbeszédablak megnyitásához.
  3. Válassza ki a Globális mezők (műveletek) Tab.
  4. Válasszon műveleteket a kiegészítő hozzáadásáhoztary információk, például adatbázis_neve vagy kliens_alkalmazás_neve.
    Konfigurálja egy esemény műveleteit.
  5. Tekintse át a Eseménymezők szakaszban megtekintheti, hogy mely mezőket rögzíti a rendszer automatikusan.
  6. Törölje a felesleges mezőket az adatmennyiség csökkentése érdekében.
    Konfigurálja egy esemény mezőit.

S 4.6tarMunkamenetek kezelése

A munkamenet konfigurálása után a következőket teheti:tarés felügyelje a működését:

  1. Kattints OK a munkamenet létrehozásához.
  2. Az Objektumkezelőben bontsa ki a Sessions mappába az új munkamenet megtekintéséhez.
  3. Kattintson jobb gombbal a munkamenet nevére, és válassza a lehetőséget Start Munkamenet hogy elkezdje rögzíteni az eseményeket.
    Staregy kibővített események ülésén SQL Server Menedzsment Stúdió.
  4. Az élő adatok megtekintéséhez kattintson jobb gombbal a munkamenetre, és válassza a Élő adatok megtekintése.
    Nézd meg egy kibővített események munkamenetének élő adatait a SQL Server Menedzsment Stúdió.
  5. A munkamenet leállításához kattintson a jobb gombbal, és válassza a Munkamenet leállítása.

5. Kiterjesztett esemény-munkamenetek létrehozása T-SQL használatával

5.1 ESEMÉNY LÉTREHOZÁSA MUNKAMENET szintaxis

A T-SQL-lel létrehozott kibővített esemény-munkamenetek precíz vezérlést biztosítanak, és lehetővé teszik a szkriptek használatát az automatikus telepítéshez. A CREATE EVENT SESSION utasítás egy meghatározott szintaxisstruktúrát követ.

Az alapvető szintaxis tartalmazza a munkamenet nevét, az egyes eseményekhez tartozó ADD EVENT záradékokat, az ADD TARGET záradékok a tárolási célhelyekhez, és opcionális WITH záradékok a munkamenet konfigurálásához.

5.2 Alapvető esemény-munkamenet létrehozása

Egy alapvető munkamenet bizonyos eseményeket figyel, és az eredményeket egy tarÍgy kell összeállítani a lényeges komponenseket.

5.2.1 Munkamenet nevének és beállításainak meghatározása

Starúgy, hogy leíró nevet adunk a munkamenetnek:

CREATE EVENT SESSION [SampleSession] ON SERVER

Az ON SERVER záradék egy szerver hatókörű munkamenetet hoz létre, amely az adatbázis változásai után is megőrződik. Azure SQL Database esetén az adatbázis hatókörű munkamenetekhez az ON DATABASE záradékot kell használni.

5.2.2 Események hozzáadása az ADD EVENT paranccsal

Események hozzáadása rögzítendő eseményekhez az ADD EVENT záradékkal:

CREATE EVENT SESSION [SampleSession] ON SERVER
ADD EVENT sqlserver.sql_statement_completed

Ez rögzíti az összes befejezett SQL utasítást. Több eseményt is hozzáadhat további ADD EVENT záradékok hozzáadásával.

5.2.3 Eseményműveletek konfigurálása

A műveletek további kontextust gyűjtenek minden eseményhez. Adja meg a műveleteket zárójelben az esemény neve után:

CREATE EVENT SESSION [SampleSession] ON SERVER
ADD EVENT sqlserver.sql_statement_completed(
    ACTION(sqlserver.sql_text, sqlserver.database_name, sqlserver.username)
)

Ez a példa rögzíti az egyes befejezett utasítások SQL szövegét, adatbázisnevét és felhasználónevét.

5.2.4 Eseménypredikátumok beállítása (WHERE záradék)

Események szűrésére szolgáló predikátumok az adatmennyiség csökkentése érdekében. Használja a WHERE záradékot az eseménydefiníción belül:

CREATE EVENT SESSION [SampleSession] ON SERVER
ADD EVENT sqlserver.sql_statement_completed(
    ACTION(sqlserver.sql_text)
    WHERE ([package0].[greater_than_uint64]([duration],(5000000)))
)

Ez kiszűri az 5 másodpercnél (5 000 000 mikroszekundumnál) hosszabb időtartamú utasításokat.

5.3 Esemény hozzáadása Tarjelentkeznek

TarMeghatározza, hogy hol tárolódnak az eseményadatok, és hogyan kerülnek feldolgozásra.

5.3.1 FÜGG TARGET szintaxis

hozzáad tarhasználja az ADD-t TARGET záradék az összes esemény definiálása után:

ADD TARGET package0.event_file(
    SET filename=N'C:\XEvents\SampleSession.xel'
)

A package0 előtag jelzi a tarA get az alapcsomagból származik.

5.3.2 Konfigurálás TarParaméterek beszerzése

Minden tarA get típus bizonyos paramétereket fogad el. Az event_file esetében konfigurálja a filename, max_file_size és max_rollover_files paramétereket:

ADD TARGET package0.event_file(
    SET filename=N'C:\XEvents\SampleSession.xel',
        max_file_size=(50),
        max_rollover_files=(5)
)

Ez a konfiguráció legfeljebb 50 MB méretű fájlokat hoz létre, és legfeljebb 5 fájlt tart fenn az átváltással.

5.4 Munkamenet-beállítások

A WITH záradék munkamenet-szintű beállításokat konfigurál, amelyek a viselkedést és az erőforrás-felhasználást szabályozzák.

5.4.1 MAX_MEMORY és EVENT_RETENTION_MODE

Memóriaelosztás és eseménykezelés vezérlése nyomás alatt:

WITH (
    MAX_MEMORY=4096 KB,
    EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS
)

Az EVENT_RETENTION_MODE opciók közé tartozik az ALLOW_SINGLE_EVENT_LOSS minimális memóriahasználathoz, az ALLOW_MULTIPLE_EVENT_LOSS mérsékelt terheléshez és a NO_EVENT_LOSS teljes adatmegőrzéshez a c-n.ost a teljesítményre gyakorolt ​​​​potenciális hatásról.

5.4.2 MAX_DISPATCH_LATENCY

Állítsa be az események maximális időtartamát a pufferekben, mielőtt azok írásra kerülnének. tarkapja:

WITH (
    MAX_DISPATCH_LATENCY=30 SECONDS
)

Az alacsonyabb értékek valós idejűbb adatokat biztosítanak a cost a megnövekedett I/O műveletek miatt.

5.4.3 MEMÓRIAPARTÍCIÓ MÓD

Optimalizálja a memória particionálását a hardverkonfigurációhoz:

WITH (
    MEMORY_PARTITION_MODE=PER_CPU
)

Az opciók közé tartozik a NONE egyetlen partícióhoz, a PER_NODE NUMA rendszerekhez, és a PER_CPU a maximális párhuzamossághoz többprocesszoros rendszereken.

S 5.5tarMunkamenetek leállítása, módosítása és ütemezése

Munkamenet-állapot és -konfiguráció kezelése ALTER EVENT SESSION utasításokkal.

5.5.1 ESEMÉNYMÓDOSÍTÓ MUNKAMENET S-heztart/Stop

Starlétrehozás utáni munkamenet:

ALTER EVENT SESSION [SampleSession] ON SERVER STATE = START;

Futó munkamenet leállítása:

ALTER EVENT SESSION [SampleSession] ON SERVER STATE = STOP;

5.5.2 Meglévő munkamenetek módosítása

Módosítsa a munkamenet konfigurációját leállított állapotban. Események hozzáadása:

ALTER EVENT SESSION [SampleSession] ON SERVER
ADD EVENT sqlserver.sql_batch_completed;

Események eltávolítása:

ALTER EVENT SESSION [SampleSession] ON SERVER
DROP EVENT sqlserver.sql_statement_completed;

5.5.3 Esemény-munkamenetek elvetése

Munkamenet teljes eltávolítása a DROP EVENT SESSION paranccsal:

DROP EVENT SESSION [SampleSession] ON SERVER;

A munkamenetet le kell állítani a leejtés előtt.

6. Események kezelése TarRészletesen bemutatkozik

6.1 eseményfájl Tarkonfiguráció lekérése

Az eseményfájl tarA get rugalmas konfigurációs lehetőségekkel biztosítja az eseményadatok állandó tárolását.

6.1.1 Fájlútvonal és elnevezési konvenciók

Adja meg az eseményfájlok teljes elérési útját és fájlnevét:

ADD TARGET package0.event_file(
    SET filename=N'C:\XEvents\MySession.xel'
)

A kibővített eseménynaplófájlokhoz .xel kiterjesztést használjon. Győződjön meg arról, hogy a SQL Server A szolgáltatásfiók írási jogosultsággal rendelkezik a megadott könyvtárhoz.

6.1.2 Fájláthelyezés és méretkezelés

Automatikus fájlátvitel konfigurálása a lemezterület kezeléséhez:

ADD TARGET package0.event_file(
    SET filename=N'C:\XEvents\MySession.xel',
        max_file_size=(50),
        max_rollover_files=(10)
)

Amikor egy fájl mérete eléri az 50 MB-ot, SQL Server A Bővített események funkció egy új fájlt hoz létre növekvő utótaggal. 10 fájl elérése után a legrégebbi fájl felülírásra kerül.

6.1.3 Eseményfájl adatainak olvasása

Eseményfájl adatainak lekérdezése a sys.fn_xe_file_ használatávaltarget_read_file függvény:

SELECT
    event_data,
    file_name,
    file_offset
FROM sys.fn_xe_file_target_read_file(
    'C:\XEvents\MySession*.xel',
    NULL, NULL, NULL
);

A helyettesítő karakteres minta beolvassa a munkamenethez tartozó összes fájlt.

6.2 gyűrűs_puffer TarHasználat lekérése

A gyűrűpuffer tarA memóriában tárolt események gyors eléréséhez get tárolja a legutóbbi tevékenységeket.

6.2.1 Memóriaalapú eseménytárolás

A ring_buffer konfigurálása memória alapú tároláshoz:

ADD TARGET package0.ring_buffer

Az események csak akkor maradnak elérhetők, ha a munkamenet aktív, és SQL Server fut. Az adatok lost amikor a munkamenet leáll, vagy a szerver újraindultarts.

6.2.2 Pufferméret és konfiguráció

A gyűrűs puffer memória-elosztásának vezérlése:

ADD TARGET package0.ring_buffer(
    SET max_memory=(4096)
)

Adja meg a memóriát KB-ban. Amikor a puffer megtelik, a régebbi események FIFO módszerrel kerülnek elvetésre.

6.2.3 Gyűrűpuffer-adatok lekérdezése

Hozzáférés a gyűrűs pufferadatokhoz DMV-ken keresztül:

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';

A tarA get_data XML formátumú eseményinformációkat tartalmaz.

6.3 eseményszámláló Tarkap

Az eseményszámláló tarA get egyszerű számlálást biztosít részletes adattárolás nélkül:

ADD TARGET package0.event_counter

Ez a tarminimális többletterheléssel követi nyomon az események gyakoriságát, ami hasznos nagy volumenű monitorozásnál, ahol csak a darabszám számít.

6.4 hisztogram Tarkap

A hisztogram tarcsoportos események lekérése mezőértékek alapján:

ADD TARGET package0.histogram(
    SET filtering_event_name=N'sqlserver.sql_statement_completed',
        source_type=0,
        source=N'database_name'
)

Ez a konfiguráció egy hisztogramot hoz létre, amely az események adatbázisok közötti eloszlását mutatja.

6.5 párosítás Tarkap

A párosítás tarKorrelálja a kapcsolódó eseményeket, például a zárak megszerzését a kioldásokkal:

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'
)

Ez lehetővé teszi a párosított műveletek és azok időtartamának elemzését.

7. Bővített eseményadatok megtekintése és elemzése

7.1 Élő adatok megtekintése az SSMS használatával

SQL Server A Management Studio grafikus felületet biztosít a kibővített események adatainak valós idejű megtekintéséhez:

  1. Az Objektumkezelőben bontsa ki Menedzsment -> Bővített események -> Sessions.
  2. Kattintson jobb gombbal az aktív munkamenetre.
  3. választ Élő adatok megtekintése az élő adatmegjelenítő megnyitásához.
    Nézd meg egy kibővített események munkamenetének élő adatait a SQL Server Menedzsment Stúdió.
  4. Az események a táblázatban jelennek meg, ahogy bekövetkeznek.
  5. Kattintson az egyes eseményekre a részletes mezőértékek megtekintéséhez a részletek panelen.
    Nézd meg az események élő adatait, beleértve az események részleteit is.
  6. Az eszköztár szűrőivel adott eseménytípusokra vagy mezőértékekre fókuszálhat.

7.2 Eseményfájl-adatok lekérdezése T-SQL-lel

A T-SQL lekérdezések rugalmas elemzést tesznek lehetővé a rögzített eseményadatokon.

7.2.1 sys.fn_xe_file_target_read_file függvény

Eseményfájl adatainak olvasása a következő rendszerfüggvénnyel:

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
);

A függvény eseményenként egy sort ad vissza XML formátumú részletekkel.

7.2.2 XML eseményadatok elemzése

Kinyerjen adott értékeket az XML eseményadatokból:

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;

Az XQuery kifejezések az XML struktúrából nyerik ki az egyes mezőértékeket.

7.2.3 Eseményadatok táblázatokká konvertálása

Strukturált eredményhalmazok létrehozása eseményadatokból:

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 Gyűrűpuffer-adatok lekérdezése

Adatok kinyerése a ring_bufferből tarkapja:

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 Rendszernézetek kiterjesztett eseményekhez

SQL Server számos DMV-t és katalógusnézetet biztosít a kiterjesztett eseményekhez kapcsolódó munkamenetek kezeléséhez és monitorozásához.

7.4.1 sys.server_event_sessions

A szerveren tárolt munkamenet-definíciók megtekintése:

SELECT
    name,
    event_retention_mode_desc,
    max_dispatch_latency,
    max_memory,
    max_event_size,
    memory_partition_mode_desc
FROM sys.server_event_sessions;

Ez a katalógusnézet az összes definiált munkamenet konfigurációs részleteit jeleníti meg.

7.4.2 sys.dm_xe_sessions

Aktív munkamenetek megtekintése:

SELECT
    name,
    create_time,
    total_regular_buffers,
    regular_buffer_size,
    total_large_buffers,
    large_buffer_size
FROM sys.dm_xe_sessions;

Ez a DMV futásidejű információkat nyújt az aktív kiterjesztett esemény munkamenetekről.

7.4.3 sys.dm_xe_session_tarjelentkeznek

Kilátás taraktív munkamenetekhez kapcsolódik:

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 Egyéb hasznos DMV-k

A további nézetek átfogó információkat nyújtanak a munkamenetről:

  • sys.dm_xe_session_events: Felsorolja az aktív munkamenetekben lévő eseményeket
  • sys.dm_xe_session_event_actions: Megjeleníti a munkamenet-eseményekhez konfigurált műveleteket.
  • sys.dm_xe_objects: Katalógusba veszi az összes elérhető eseményt, műveletet és tarjelentkeznek
  • sys.dm_xe_object_columns: Az egyes eseménytípusokhoz elérhető részletmezők
  • sys.dm_xe_packages: Felsorolja az összes kiterjesztett eseménycsomagot

8. Gyakorlati felhasználási esetek és példák

8.1 SQL utasítás végrehajtásának monitorozása

Az SQL utasítások végrehajtásának nyomon követése betekintést nyújt a lekérdezési mintákba és a teljesítményjellemzőkbe.

8.1.1 sql_statement_completed események követése

Hozz létre egy munkamenetet a befejezett SQL utasítások figyeléséhez:

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 Szűrés adatbázis vagy alkalmazás szerint

Konkrét adatbázisokra vagy alkalmazásokra fókuszálva predikátumok használatával:

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 Holtpontról történő információgyűjtés

A patthelyzet-elemzéshez részletes információkra van szükség az ütköző tranzakciókról.

8.2.1 xml_deadlock_report Esemény

Hozz létre egy munkamenetet a teljes holtponti grafikonok rögzítéséhez:

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 Holtpontgráfok elemzése

Holtponti információk kinyerése és elemzése:

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';

A holtpont-gráf részleteket tartalmaz a folyamatokról, az erőforrásokról és az áldozatkiválasztásról.

8.3 Lekérdezéskövetési teljesítményproblémák

A rosszul teljesítő lekérdezések azonosítása időtartam- és erőforrás-felhasználási mérőszámok segítségével.

8.3.1 Hosszú ideig futó lekérdezések észlelése

Meghatározott időtartam-küszöbértékeket meghaladó lekérdezések rögzítése:

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 Végrehajtási terv elemzése

Lekérdezési tervek rögzítése teljesítményelemzéshez:

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 Bejelentkezési és biztonsági események monitorozása

Hitelesítési és engedélyezési tevékenységek nyomon követése biztonsági auditáláshoz.

8.4.1 Bejelentkezés sikerességének és sikertelenségének nyomon követése

Figyelje a sikeres és sikertelen bejelentkezési kísérleteket:

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 Engedélymódosítások

Biztonsági engedélyek módosításainak nyomon követése:

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 Adatbázis-szintű monitorozás

Adatbázis-specifikus műveletek és állapotváltozások figyelése.

8.5.1 Biztonsági mentési és visszaállítási események

Biztonsági mentési és visszaállítási műveletek nyomon követése:

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 Adatbázis állapotváltozások

Adatbázis állapotátmenetek monitorozása:

CREATE EVENT SESSION [DatabaseStateChanges] ON SERVER
ADD EVENT sqlserver.database_started,
ADD EVENT sqlserver.database_stopped
ADD TARGET package0.ring_buffer;

8.6 Adatbázis-sérülés és -integritási problémák észlelése

SQL Server A kibővített események korai figyelmeztetési képességeket biztosítanak az adatbázis esetleges sérüléseinek észlelésére, lehetővé téve a proaktív beavatkozást, mielőtt a problémák eszkalálódnának.

8.6.1 A korrupcióészlelés kulcsfontosságú eseményei

Számos esemény potenciális sérülést vagy I/O problémákat jelez.

8.6.1.1 error_reported Kritikus hibákhoz tartozó esemény

Az error_reported esemény mindent rögzít SQL Server hibák, beleértve a korrupcióval kapcsolatos hibaszámokat is:

ADD EVENT sqlserver.error_reported(
    WHERE (
        [severity] >= (20)
        OR [error_number] IN (823, 824, 825, 832, 855, 856)
    )
)

A 823-as hiba I/O hibákat, a 824-es logikai konzisztencia hibákat, a 825-ös hiba pedig az olvasási újrapróbálkozások sikerességét jelzi, ami hardverproblémákra utalhat.

8.6.1.2 database_uspect_data_page Esemény

Ez az esemény akkor aktiválódik, amikor SQL Server gyanús oldallal találkozik:

ADD EVENT sqlserver.database_suspect_data_page

A gyanús oldalak potenciális sérülést jeleznek, és az msdb.dbo.suspect_pages táblában kerülnek rögzítésre.

8.6.1.3 errorlog_written Esemény

Rögzítse a következőre írt bejegyzéseket: SQL Server hibanapló:

ADD EVENT sqlserver.errorlog_written(
    WHERE ([severity] >= (16))
)

8.6.2 Korrupciófigyelő munkamenet létrehozása

Hozzon létre egy átfogó ülést a korrupció felderítésére és nyomon követésére.

8.6.2.1 Sérülési hibaszámok szűrése (823, 824, 825)

Hozzon létre egy tarA korrupciós mutatókra összpontosító getted ülés:

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 Megfelelő súlyossági szintek beállítása

Tartalmazza a súlyos hibákat, amelyek sérülésre utalhatnak:

WHERE (
    [severity] >= (20)
    OR [error_number] IN (823, 824, 825)
)

A 20-as és afeletti súlyosság olyan rendszerszintű problémákra utal, amelyek gyakran a korrupcióhoz kapcsolódnak.

8.6.2.3 Eseményfájl konfigurálása TarÉrtesítések fogadása

Sérülési események tárolása elemzés és riasztás céljából:

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 Korrupciós események adatainak elemzése

A rögzített adatokból korrupcióval kapcsolatos események kinyerése és értelmezése.

8.6.3.1 Gyanús oldalak azonosítása

Lekérdezés a database_suspect_data_page eseményekhez:

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 Hiba részleteinek és kontextusának kinyerése

Az error_reported események elemzése sérülési minták szempontjából:

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áció a DBCC CHECKDB-vel

Használja a kibővített események adatait útmutatóként DBCC CHECKDB végrehajtás.

8.6.4.1 DBCC CHECKDB indítása események alapján

Sérülési események észlelésekor futtassa a DBCC CHECKDB parancsot az átfogó ellenőrzéshez:

-- After detecting corruption events, run DBCC CHECKDB
DBCC CHECKDB ('YourDatabaseName') WITH NO_INFOMSGS, ALL_ERRORMSGS;

Az Extended Events biztosítja a korai figyelmeztetést, míg a DBCC CHECKDB alapos ellenőrzést végez.

8.6.4.2 Automatizált korrupcióelhárítási munkafolyamatok

Automatizált válaszok megvalósítása az eseményfájl monitorozásával:

  1. konfigurálása SQL Server Ügynökfeladat a sérülésfigyelési eseményfájl rendszeres lekérdezéséhez.
  2. Sérülési események észlelésekor futtassa a DBCC CHECKDB parancsot az érintett adatbázison.
  3. E-mail értesítések küldése az adatbázis-adminisztrátoroknak az esemény részleteivel és a DBCC CHECKDB eredményekkel.
  4. Naplózza az eredményeket egy központi monitorozó táblázatba a trendelemzés érdekében.
8.6.4.3 A proaktív monitorozás és a teljesítmény egyensúlyban tartása

A kiterjesztett események alacsony többletterhelésű sérülésészlelést kínálnak a gyakori DBCC CHECKDB végrehajtáshoz képest:

  • Bővített események folyamatos futtatása valós idejű sérülésészlelés céljából
  • A DBCC CHECKDB parancs végrehajtása csak akkor, ha sérülésjelzők jelennek meg.
  • Rendszeres DBCC CHECKDB ütemezése karbantartási időszakokban
  • Kiterjesztett események használata annak azonosítására, hogy mely adatbázisok igényelnek azonnali figyelmet

Ez a megközelítés proaktív monitorozást biztosít az állandó integritásellenőrzések jelentős erőforrás-felhasználása nélkül.

8.6.4.4 Sérült adatbázis javítása

Ha sérüléseket észlel az adatbázisban, a DBCC CHECKDB segítségével javíthatja a kisebb hibákat. Ha ez nem sikerül, kipróbálhat egy harmadik féltől származó szolgáltatást. SQL adatbázis-helyreállító eszköz, amely általában magasabb helyreállítási arányt kínál a súlyosan sérült adatbázisok esetén.

9. Kiszolgáló hatókörű vs. adatbázis hatókörű kiterjesztett események

9.1 Kiszolgáló hatókörű esemény-munkamenetek

A szerver hatókörű munkamenetek a teljes szerveren figyelik a tevékenységet SQL Server példány. Ezek a munkamenetek az ON SERVER záradékkal jönnek létre, és a fő adatbázisban maradnak.

CREATE EVENT SESSION [ServerWideMonitoring] ON SERVER
ADD EVENT sqlserver.sql_statement_completed
ADD TARGET package0.event_file(
    SET filename=N'C:\XEvents\ServerWide.xel'
);

A szerver hatókörű munkamenetek minden adatbázisból rögzítik az eseményeket, és alkalmasak példányszintű monitorozásra.

9.2 Adatbázis-hatókörű esemény-munkamenetek (Azure SQL Database)

Az adatbázis-hatókörű munkamenetek egyetlen adatbázisra korlátozódnak, és elsősorban az Azure SQL Database-ben használatosak, ahol a kiszolgálószintű hozzáférés korlátozott:

CREATE EVENT SESSION [DatabaseSpecificMonitoring] ON DATABASE
ADD EVENT sqlserver.sql_statement_completed
ADD TARGET package0.event_file(
    SET filename=N'DatabaseMonitoring.xel'
);

Az Azure SQL Database-ben az eseményfájlokat az Azure Blob Storage tárolja, nem pedig a helyi fájlrendszerekben.

9.3 Különbségek és használati esetek

A szerver hatókörű munkamenetek átfogó monitorozást biztosítanak az összes adatbázison, de emelt szintű jogosultságokat igényelnek. Az adatbázis hatókörű munkamenetek elkülönítést kínálnak, és adott alkalmazások vagy bérlők monitorozásához megfelelőek.

Használjon kiszolgáló hatókörű munkameneteket központosított monitorozáshoz, adatbázisok közötti teljesítménybeli hibaelhárításhoz és biztonsági auditáláshoz. Használjon adatbázis hatókörű munkameneteket Azure SQL Database-ben, több-bérlős környezetekben, vagy a monitorozási felelősségek alkalmazáscsapatoknak történő delegálásakor.

10. Kiterjesztett események az Azure SQL Database-ben

10.1 Azure-specifikus szempontok

Az Azure SQL Database kiterjesztett eseményeket valósít meg, némileg eltérve a helyszíni megoldásoktól. SQL ServerA munkamenetek alapértelmezés szerint adatbázis-hatókörűek, és az eseményfájlok tárolása az Azure Blob Storage-ot használja a helyi fájlrendszerek helyett.

Az Azure Blob Storage-ba való hitelesítéshez egy, az eseményfájlban konfigurált SAS-token szükséges. tarA kapcsolati karakterláncok arra a tárfiókra és tárolóra hivatkoznak, ahol az eseményfájlok tárolódnak.

10.2 Elérhető Tarbekerül az Azure-ba

Az Azure SQL Database támogatja ezeket a kiterjesztett eseményeket tarkapja:

  • event_file: Az Azure Blob Storage-ba ír
  • ring_buffer: Memória alapú tárolás, amely ugyanolyan viselkedésű, mint a helyszíni tárolás.
  • event_counter: Az események előfordulásának számlálása

Az eseményfájl tarA lekéréshez Azure Blob Storage hitelesítő adatokkal történő konfiguráció szükséges:

ADD TARGET package0.event_file(
    SET filename=N'https://yourstorageaccount.blob.core.windows.net/container/EventFile.xel'
)

10.3 Adatbázis-hatókörű munkamenetek létrehozása

Munkamenet létrehozása az Azure SQL Database-ben:

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;

Az Azure-ban az adatbázis-hatókörű munkamenetek hasonlóan viselkednek, mint a helyszíni, kiszolgáló-hatókörű munkamenetek, de a hatókör az aktuális adatbázisra korlátozódik.

11. Bevált gyakorlatok és teljesítményoptimalizálás

11.1 A teljesítményre gyakorolt ​​hatás minimalizálása

A kiterjesztett események minimális terhelést jelentenek, de a nem megfelelő konfiguráció befolyásolhatja a teljesítményt. Kövesse az alábbi irányelveket:

  • Használjon konkrét predikátumokat az események szűrésére ahelyett, hogy mindent rögzítene
  • Kerülje a felesleges műveletek gyűjtését, amelyek feldolgozási többletterhelést okoznak
  • Válassza ki a megfelelőt taraz adatmegőrzési igényeken alapul
  • Ésszerű pufferméretek és küldési késleltetések beállítása
  • Munkamenet-erőforrás-felhasználás monitorozása DMV-k segítségével

11.2 A megfelelő események és szűrők kiválasztása

Olyan eseményeket válasszon, amelyek közvetlenül a monitorozási céljaira vonatkoznak. Kerülje a nagy gyakoriságú eseményeket, kivéve, ha feltétlenül szükséges, és mindig alkalmazzon predikátumokat az adatmennyiség csökkentése érdekében.

Például az összes sql_statement_completed esemény rögzítése helyett szűrjön adott adatbázisokra vagy időtartam-küszöbértékekre:

WHERE (
    [sqlserver].[database_name] = N'ProductionDB'
    AND [duration] > 1000000
)

11.3 TarKiválasztási Útmutató

A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a taraz elemzési igényeid alapján kapod meg:

  • Használja az event_file függvényt a részletes historikus elemzéshez és a hosszú távú megőrzéshez
  • Használja a ring_buffer-t valós idejű monitorozáshoz minimális I/O hatással
  • Használja az event_counter-t, ha csak a gyakoriság számít
  • Hisztogram használata eloszláselemzéshez
  • Használja a pair_matching függvényt a korrelált események elemzéséhez

11.4 Munkamenet-konfigurációs ajánlások

Konfigurálja a munkameneteket megfelelő erőforrás-korlátokkal:

  • Állítsa be a MAX_MEMORY értéket a várható eseménymennyiség és a szerver erőforrásai alapján
  • Használja az ALLOW_SINGLE_EVENT_LOSS paramétert a minimális méterben kifejezett többletterheléshez.ost forgatókönyvek
  • Állítsa be a MAX_DISPATCH_LATENCY értéket a valós idejű igények és a teljesítmény egyensúlyának megteremtéséhez.
  • PER_CPU memóriaparticionálás használata többprocesszoros rendszereken
  • Kerülje az S-tTARTUP_STATE=ON, kivéve, ha folyamatos felügyeletre van szükség

11.5 Eseményfájl méretének és megőrzésének kezelése

Fájlátvitel konfigurálása a korlátlan lemezhasználat megakadályozása érdekében:

ADD TARGET package0.event_file(
    SET filename=N'C:\XEvents\Session.xel',
        max_file_size=(100),
        max_rollover_files=(10)
)

Ez a konfiguráció körülbelül 1 GB eseményadatot tárol (10 fájl × 100 MB). Módosítsa az adatmegőrzési követelmények és a rendelkezésre álló tárhely alapján.

12. Kiterjesztett események hibaelhárítása

12.1 Gyakori problémák és megoldások

A kiterjesztett eseményekkel kapcsolatos gyakori problémák közé tartoznak a munkamenetek nem rögzítik az adatokat, a teljesítmény romlása, a fájlok tarproblémákat és váratlan munkamenet-viselkedést tapasztalhat.

12.2 A munkamenet nem rögzít adatokat

Ha egy munkamenet nem rögzíti a várt eseményeket:

  1. Ellenőrizze, hogy a munkamenet sikeres-etara sys.dm_xe_sessions használatával.
  2. Ellenőrizze a predikátumokat, hogy biztosan ne szűrjék ki az összes eseményt.
  3. Események aktiválásának megerősítése tempó szerintrara szűrők finom eltávolítása.
  4. Tekintse át az engedélyeket, hogy biztosan hozzáférhessen a munkamenet-adatok megtekintéséhez.
  5. Ellenőrizze, hogy tarA get konfiguráció helyes és írható.
SELECT name, create_time
FROM sys.dm_xe_sessions
WHERE name = 'YourSessionName';

12.3 Teljesítményromlás

Ha a kiterjesztett események teljesítményproblémákat okoznak:

  1. Predikátumok hozzáadása az események mennyiségének csökkentéséhez.
  2. Távolítsd el a felesleges tevékenységeket, amelyek táplálékkiegészítőket gyűjtenektary adatok.
  3. Növelje a MAX_DISPATCH_LATENCY értéket az írási gyakoriság csökkentéséhez.
  4. Módosítsa az EVENT_RETENTION_MODE értékét ALLOW_SINGLE_EVENT_LOSS értékre.
  5. Nagy gyakoriságú események esetén érdemes lehet a ring_buffer függvényt használni az event_file helyett.

12.4 fájl Tarproblémákat kapni

filé tarA problémák gyakran az engedélyekkel vagy a lemezterülettel kapcsolatosak:

  1. Ellenőrizze a SQL Server a szolgáltatásfiók írási jogosultsággal rendelkezik a következőhöz: tarkönyvtár lekérése.
  2. Győződjön meg arról, hogy elegendő lemezterület áll rendelkezésre.
  3. Ellenőrizd, hogy a megadott elérési út létezik-e és elérhető-e.
  4. Tekintse át a fájlátviteli konfigurációt, ha a fájlok nem a várt módon kerülnek áthelyezésre.

12.5 Hibakeresés rendszernézetekkel

DMV-k használata a kiterjesztett eseményekkel kapcsolatos problémák diagnosztizálására:

-- 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. Haladó témák

13.1 Egyéni eseménycsomagok létrehozása

A haladó felhasználók egyéni eseménycsomagokat hozhatnak létre a bővítés érdekében. SQL Server Kiterjesztett események funkcionalitása. Ehhez C++ fejlesztés és integráció szükséges a SQL Server bővíthetőségi keretrendszer.

Az egyéni csomagok lehetővé teszik az alkalmazásspecifikus események monitorozását, vagy harmadik féltől származó monitorozó rendszerek integrálását a kiterjesztett események infrastruktúrájával.

13.2 Eseménymunkamenet-sablonok

Az SSMS beépített sablonokat biztosít a gyakori monitorozási forgatókönyvekhez. Sablonok elérése új munkamenetek létrehozásakor a varázslón keresztül:

  1. Az Új munkamenet párbeszédpanelen kattintson a Sablon ledob.
  2. Válasszon az elérhető sablonok közül, például a Lekérdezés részleteinek nyomon követése vagy a Rendszerállapot.
  3. Módosítsa a sablont az Ön egyedi igényeinek megfelelően.

13.3 Integráció monitorozási megoldásokkal

A kibővített események adatai vállalati monitorozási megoldásokat is támogathatnak:

  • Eseményadatok exportálása központosított naplózórendszerekbe
  • Eseményfájlok elemzése és adatok betöltése a monitorozó adatbázisokba
  • Egyéni irányítópultok létrehozása BI-eszközök használatával
  • Riasztások indítása adott eseményminták alapján
  • Korrelál SQL Server események alkalmazás- és infrastruktúra-metrikákkal

13.4 Automatizálás és ütemezés

Automatizálja a kiterjesztett események kezelését a következővel: SQL Server Ügynök:

  • Feladatok létrehozása s-heztart/stop munkamenetek meghatározott időablakokban
  • Eseményfájl-elemzés és jelentéskészítés ütemezése
  • Adatmegőrzési szabályzatok megvalósítása régi eseményfájlok archiválásával vagy törlésével
  • Automatizálja a reagálást az észlelt körülményekre, például teljesítményproblémákra vagy biztonsági eseményekre

14. Migráció innen SQL Server Profiler

14.1 SQL Server Profiler eseményekből bővített eseményekhez való leképezés

A Microsoft leképezést biztosít a következők között: SQL Server Profiler események és kiterjesztett események. A gyakori megfeleltetések a következők:

  • SQL:BatchCompleted -> sql_batch_completed
  • SQL:BatchStarting -> sql_batch_starting
  • SQL:StmtCompleted -> sql_utasítás_completed
  • SQL:StmtStarting -> sql_utasításoktarting
  • Holtpontgráf -> xml_deadlock_report
  • Audit bejelentkezés -> bejelentkezés
  • Kijelentkezés auditálása -> kijelentkezés

14.2 Nyomkövetési definíciók konvertálása

A meglévő konvertálása SQL Server A Profiler nyomon követi a kiterjesztett események munkameneteit az egyenértékű események azonosításával és a megfelelő predikátumok konfigurálásával. Az SSMS segítséget nyújt a gyakori konverziókhoz.

Tekintse át a nyomkövetési szűrőket, és alakítsa át őket kiterjesztett események predikátumaivá. A kiterjesztett eseményekben található műveletek lecserélik a nyomkövetési oszlopokat a következőből: SQL Server Profilkészítő.

14.3 Teljesítmény-összehasonlítás

A kiterjesztett események jelentősen jobb teljesítményt nyújtanak, mint a SQL Server Profiler. A benchmark vizsgálatok azt mutatják, hogy a kiterjesztett események kevesebb CPU-ciklust igényelnek, és kisebb hatással vannak a tranzakciók átvitelére.

A kiterjesztett események aszinkron feldolgozást és optimalizált memóriakezelést használnak, miközben SQL Server A Profiler szinkron eseményrögzítésre támaszkodik, amely a nyomkövetési feldolgozás befejezéséig blokkolja az eseményeket.

15. Következtetés

15.1 A kulcsfogalmak összefoglalása

SQL Server Az Extended Events hatékony és könnyű keretrendszert biztosít a monitorozáshoz és a hibakereséshez. SQL ServerAz architektúra eseményekből, műveletekből, predikátumokból áll, tarés a munkamenetek, amelyek együttműködve rögzítik a releváns szervertevékenységet.

A munkamenetek SSMS vagy T-SQL használatával hozhatók létre, ami rugalmasságot biztosít mind az eseti hibaelhárításhoz, mind az automatizált monitorozáshoz. tarA get típusok különböző elemzési megközelítéseket támogatnak, a ring_bufferrel történő valós idejű monitorozástól az event_file-lal történő historikus elemzésig.

A kiterjesztett események jobb teljesítményt nyújtanak a többihez képest. SQL Server Profiler, miközben átfogóbb monitorozási képességeket biztosít. A rendszer lehetővé teszi az adatbázis-adminisztrátorok és a fejlesztők számára a problémák diagnosztizálását, a teljesítmény optimalizálását, a biztonság fokozását és a megfelelőség fenntartását.

15.2 Következő lépések és további források

A folyamatos fejlesztéshez SQL Server XEvents szakértelem:

  • Implementálj kiterjesztett eseményeket tesztkörnyezetekben a gyakorlati tapasztalatok megszerzése érdekében
  • A teljes eseménykatalógusokért és a részletes szintaxisreferenciákért tekintse át a Microsoft dokumentációját.
  • Csatlakozik SQL Server közösségi fórumok, ahol mások tapasztalataiból tanulhatunk
  • Fedezzen fel speciális forgatókönyveket, például az egyéni csomagokat és a monitorozó platformokkal való integrációt
  • Fejlessz ki egy librátrarmunkamenet-sablonok száma gyakori monitorozási forgatókönyvekhez

16 GYIK szekció

K: Mik azok SQL Server Kiterjesztett események?

A: SQL Server Az Extended Events egy könnyűsúlyú teljesítményfigyelő rendszer, amely a következőbe van integrálva: SQL Server Adatbázismotor, amely minimális terheléssel rögzíti a szerver működésének részletes információit.

K: Miben különböznek a kiterjesztett események a SQL Server Profilkészítő?

A: A kiterjesztett események jobb teljesítményt, alacsonyabb terhelést és rugalmasabb konfigurációt biztosítanak, mint a SQL Server Profilkészítő. SQL Server A Profiler elavult, és a Microsoft a kiterjesztett események használatát javasolja minden monitorozási feladathoz.

K: Befolyásolhatják-e a hosszabb események SQL Server teljesítmény?

V: Ha a megfelelő predikátumokkal és erőforrás-korlátokkal megfelelően konfigurálják, a kiterjesztett események minimális hatással vannak a teljesítményre. A szűrés nélküli, nem megfelelő konfiguráció befolyásolhatja a teljesítményt.

K: Milyen engedélyek szükségesek a kiterjesztett esemény-munkamenetek létrehozásához?

V: Kiszolgáló hatókörű munkamenetekhez ESEMÉNYMUNKAMENET MÓDOSÍTÁSA (ALTER ANY EVENT SESSION) jogosultságra, adatbázis hatókörű munkamenetekhez pedig az adatbázis CONTROL jogosultságra van szükség.

K: Hogyan tekinthetem meg a kibővített események adatait?

V: Használd SQL Server A Management Studio élő adatmegjelenítője, eseményfájlok lekérdezése a sys.fn_xe_file_ segítségéveltarget_read_file, vagy gyűrűpufferadatok lekérdezése DMV-ken keresztül.

K: Észlelik-e a kiterjesztett események az adatbázis sérülését?

V: Igen, a kibővített események képesek rögzíteni a sérüléssel kapcsolatos hibákat (823, 824, 825) és a gyanús oldaleseményeket, így korai figyelmeztetést adnak a lehetséges sérülési problémákra.

K: Mi a különbség az események, a cselekvések és az predikátumok között?

A: Az események olyan események, amelyeket monitorozni szeretnél. A műveletek kiegészítik a folyamatot.tary információkat csatol a rögzített eseményekhez. A predikátumok feltételek alapján szűrik az eseményeket az adatmennyiség csökkentése érdekében.

K: Hogyan figyelhetem meg az adott alkalmazásokból vagy adatbázisokból érkező lekérdezéseket?

A: Használjon predikátumokat az eseménykonfigurációban a database_name, client_app_name vagy más releváns mezők szerinti szűréshez.

K: Mi tarkap, amit használnom kellene kiterjesztett eseményekhez?

A: Az event_file fájlt perzisztens tárolásra és historikus elemzésre, a ring_buffer fájlt valós idejű, alacsony terhelésű monitorozásra, az event_counter fájlt egyszerű gyakoriságkövetésre, a hisztogram fájlt pedig eloszláselemzésre használja.

K: Elérhetők-e kiterjesztett események az Azure SQL Database-ben?

V: Igen, az Azure SQL Database támogatja az adatbázis-hatókörű kiterjesztett eseményeket, amelyek eseményfájljait az Azure Blob Storage-ban tárolja.

K: Hogyan oldhatom meg a hibákat egy olyan kiterjesztett eseményekkel kapcsolatos munkamenetben, amely nem rögzít adatokat?

A: Ellenőrizze, hogy a munkamenet sikeres-e.tarted, ellenőrizd, hogy a predikátumok nem szűrik-e az összes eseményt, erősítsd meg tarkonfiguráció lekérése és jogosultságok áttekintése rendszer-DMV-k segítségével.

K: Automatizálhatom a kiterjesztett események kezelését?

V: Igen, használja SQL Server Ügynöki állások s-nektarmunkamenetek leállítása, eseményfájlok elemzése, adatmegőrzési szabályzatok megvalósítása és a detektált feltételekre való reagálás.

Referenciák


A szerzőről

Yuan Sheng több mint 10 éves tapasztalattal rendelkező vezető adatbázis-adminisztrátor (DBA) SQL Server környezetekben és vállalati adatbázis-kezelésben. Több száz adatbázis-helyreállítási forgatókönyvet oldott meg sikeresen pénzügyi szolgáltatások, egészségügyi ellátás és gyártási szervezetek számára.

Yuan specializálódott SQL Server adatbázis-helyreállítás, magas rendelkezésre állású megoldások és teljesítményoptimalizálás. Kiterjedt gyakorlati tapasztalata magában foglalja a több terabájtos adatbázisok kezelését, megvalósítását Mindig elérhetőségi csoportok, valamint automatizált biztonsági mentési és helyreállítási stratégiák kidolgozása kritikus fontosságú üzleti rendszerekhez.

Yuan műszaki szakértelmének és gyakorlatias megközelítésének köszönhetően átfogó útmutatók készítésére összpontosít, amelyek segítik az adatbázis-adminisztrátorokat és az informatikai szakembereket a komplex problémák megoldásában SQL Server hatékonyan kihívásokat intéz. Folyamatosan naprakész a legújabb információkkal. SQL Server kiadásait és a Microsoft fejlődő adatbázis-technológiáit, rendszeresen tesztelve a helyreállítási forgatókönyveket annak érdekében, hogy ajánlásai a valós legjobb gyakorlatokat tükrözzék.

Kérdései vannak a SQL Server helyreállításra vagy további adatbázis-hibaelhárítási útmutatásra van szüksége? Yuan örömmel fogadja visszajelzéseket és javaslatokat ezen technikai erőforrások fejlesztéséért.

Oszd meg most: