Bővített események az Azure SQL Database-ben és a felügyelt Azure SQL-példányban

A következőre vonatkozik: Azure SQL DatabaseFelügyelt Azure SQL-példány

A Bővített események bemutatása:

Az Azure SQL Database-ben és az Azure SQL Managed Instance-ben futó kiterjesztett események funkciókészlete, funkciói és használati forgatókönyvei hasonlóak az SQL Serverben elérhető funkciókhoz. A legfontosabb különbségek a következők:

  • A event_file cél mindig blobokat használ az Azure Storage-ban a lemezen lévő fájlok helyett.
  • Az Azure SQL Database-ben az esemény-munkamenetek mindig adatbázis-hatókörrel vannak elosztva. Ez azt jelenti, hogy:
    • Az egyik adatbázis esemény munkamenetei nem gyűjthetnek eseményeket egy másik adatbázisból.
    • Egy eseménynek egy munkamenetbe belefoglalandó felhasználói adatbázis kontextusában kell történnie.
  • A felügyelt Azure SQL-példányban kiszolgáló- és adatbázis-hatókörű esemény munkameneteket is létrehozhat. Javasoljuk, hogy a legtöbb forgatókönyvhöz kiszolgálói hatókörű esemény-munkameneteket használjunk.

Első lépések

Az Azure SQL Database-ben és a felügyelt Azure SQL-példányban két példa segíthet a bővített események gyors használatában:

  • Hozzon létre egy munkamenetet egy event_file-tárolóval az Azure Storage-ban. Ez a példa bemutatja, hogyan rögzíthet eseményadatokat egy fájlban (blobban) az Azure Storage-ban a event_file cél használatával. Ezt akkor használja, ha meg kell őriznie a rögzített eseményadatokat, vagy ha eseménynaplót szeretne használni az SQL Server Management Studióban (SSMS) a rögzített adatok elemzéséhez.
  • Hozzon létre egy munkamenetet egy ring_buffer tárolóval a memóriában. Ez a példa bemutatja, hogyan rögzítheti a legutóbbi eseményeket egy esemény-munkamenetből a memóriában a ring_buffer cél használatával. Ezzel gyorsan áttekintheti a legutóbbi eseményeket az alkalmi vizsgálatok vagy hibaelhárítás során anélkül, hogy rögzített eseményadatokat kellene tárolnia.

A kiterjesztett események az írásvédett replikák monitorozására használhatók. További információ: Lekérdezések olvasása replikákon.

Ajánlott eljárások

Az azure SQL Database-ben és a felügyelt Azure SQL-példányban a kiterjesztett események megbízható és az adatbázismotorok állapotának és számítási feladatainak teljesítményének befolyásolása nélkül történő használatához kövesse az alábbi ajánlott eljárásokat.

  • Ha a célértéket event_file használja:
    • Ne állítsa be a EVENT_RETENTION_MODE beállítást a következőre NO_EVENT_LOSS: . Ez a kapcsolat időtúllépéseit és feladatátvételi késéseket okozhat más problémák között, ami hatással lehet az adatbázis vagy a felügyelt példányok rendelkezésre állására.
    • Használjon egy tárfiókot ugyanabban az Azure-régióban, mint az adatbázis vagy a felügyelt példány, ahol esemény-munkameneteket hoz létre.
    • A tárfiók redundanciának igazítása az adatbázis, a rugalmas készlet vagy a felügyelt példány redundanciájával. Helyileg redundáns erőforrások esetén használja az LRS, GRS vagy RA-GRS elemet. Zónaredundáns erőforrások esetén használja a ZRS, a GZRS vagy az RA-GZRS elemet. További részletekért tekintse meg az Azure Storage-redundanciát .
    • Ne használjon más blobelérési szintet , mint Hota .
  • Ha folyamatosan futó esemény munkamenetet szeretne létrehozni, amely minden adatbázismotor újraindítása után automatikusan elindul (például feladatátvétel vagy karbantartási esemény után), adja meg az esemény munkamenet-beállítását STARTUP_STATE = ON az Ön CREATE EVENT SESSION vagy ALTER EVENT SESSION az utasítások között.
  • Ezzel szemben a rövid távú esemény-munkamenetekhez, például az alkalmi hibaelhárításhoz használt munkamenetekhez használható STARTUP_STATE = OFF .
  • Az Azure SQL Database-ben ne olvassa be a holtpont eseményeit a beépített esemény munkamenetből dl . Ha nagy számú holtpont-eseményt gyűjtenek össze, a sys.fn_xe_file_target_read_file() függvénnyel való olvasás memóriakihasználtsági hibát okozhat az master adatbázisban. Ez hatással lehet a bejelentkezés feldolgozására, és alkalmazáskimaradáshoz vezethet. A holtpontok monitorozásának ajánlott módjaiért lásd : Holtpontdiagramok gyűjtése az Azure SQL Database-ben kiterjesztett eseményekkel.

Esemény-munkamenet céljai

Az Azure SQL Database és a felügyelt Azure SQL-példány a következő célokat támogatja:

  • event_file cél. Teljes puffereket ír egy Azure Storage-tárolóban lévő blobba.
  • ring_buffer cél. Az eseményadatokat a memóriában tárolja, amíg új eseményadatok nem cserélik le.
  • event_counter cél. Megszámolja a kiterjesztett események munkamenetében előforduló összes eseményt.
  • hisztogram cél. A mezők vagy műveletek különböző értékeinek előfordulásait számlálja meg külön gyűjtőkben.
  • event_stream. adatfolyamok eseményadatokat egy .Net-alkalmazásba.

Feljegyzés

Az event_stream Azure SQL Database-ben és a felügyelt Azure SQL-példányban lévő cél előzetes verzióban érhető el.

A Transact-SQL eltérései

Amikor végrehajtja a CREATE EVENT Standard kiadás SSION, ALTER EVENT Standard kiadás SSION és DROP EVENT Standard kiadás SSION utasításokat az SQL Serverben és a felügyelt Azure SQL-példányban, használja a ON SERVER záradékot. Az Azure SQL Database-ben ehelyett a záradékot ON DATABASE használja, mert az Azure SQL Database-ben az esemény-munkamenetek adatbázis-hatókörrel vannak elosztva.

Bővített események katalógusnézetei

A bővített események számos katalógusnézetet biztosítanak. A katalógusnézetek ismertetik az esemény munkamenetének metaadatait vagy definícióját. Ezek a nézetek nem adnak vissza információt az aktív esemény-munkamenetek példányairól.

Katalógusnézet neve Leírás
sys.database_event_session_actions Egy esemény munkamenet minden egyes eseményén egy sort ad vissza minden művelethez.
sys.database_event_session_events Egy esemény munkamenetében minden egyes eseményhez egy sort ad vissza.
sys.database_event_session_fields Egy sort ad vissza minden olyan testre szabható oszlophoz, amely explicit módon lett beállítva eseményekre és célokra.
sys.database_event_session_targets Egy esemény-munkamenet minden egyes eseménycéljának egy sorát adja vissza.
sys.database_event_sessions Egy sort ad vissza az adatbázis minden esemény-munkamenetéhez.

Bővített események dinamikus felügyeleti nézetei

A bővített események számos dinamikus felügyeleti nézetet (DMV-t) biztosítanak. A DMV-k az elindított esemény-munkamenetekről adnak vissza információkat.

DMV neve Leírás
sys.dm_xe_database_session_event_actions Adatokat ad vissza az esemény-munkamenet műveleteiről.
sys.dm_xe_database_session_events Adatokat ad vissza a munkamenet-eseményekről.
sys.dm_xe_database_session_object_columns A munkamenethez kötött objektumok konfigurációs értékeit jeleníti meg.
sys.dm_xe_database_session_targets Adatokat ad vissza a munkamenet-célokról.
sys.dm_xe_database_sessions Egy sort ad vissza az aktuális adatbázisban futó minden esemény-munkamenethez.

Gyakori DMV-k

Az Azure SQL Database, az Azure SQL Managed Instance és az SQL Server esetében további kiterjesztett eseményekhez kapcsolódó DMV-k is gyakoriak:

Elérhető események, műveletek és célok

Az SQL Serverhez hasonlóan az alábbi lekérdezéssel is beszerezheti az elérhető eseményeket, műveleteket és célokat:

SELECT o.object_type,
       p.name AS package_name,
       o.name AS db_object_name,
       o.description AS db_obj_description
FROM sys.dm_xe_objects AS o
INNER JOIN sys.dm_xe_packages AS p
ON p.guid = o.package_guid
WHERE o.object_type IN ('action','event','target')
ORDER BY o.object_type,
         p.name,
         o.name;

Jogosultságok

Az Azure SQL Database-ben és a felügyelt Azure SQL-példányban a bővített események egy részletes engedélymodellt támogatnak. A következő engedélyek adhatóak meg:

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

Az egyes engedélyek vezérlőiről a CREATE EVENT Standard kiadás SSION, az ALTER EVENT Standard kiadás SSION és a DROP EVENT Standard kiadás SSION című témakörben talál további információt.

Az összes ilyen engedély szerepel az adatbázis vagy a CONTROL felügyelt példány engedélyében. Az Azure SQL Database-ben az adatbázis tulajdonosa (dbo), az db_owner adatbázis-szerepkör tagjai és a logikai kiszolgáló rendszergazdái rendelkeznek az adatbázis CONTROL engedélyével. A felügyelt Azure SQL-példányban a sysadmin kiszolgálói szerepkör tagjai rendelkeznek a CONTROL példány engedélyével.

Tároló engedélyezése és vezérlése

A cél használatakor az event_file eseményadatok egy Azure Storage-tárolóban lévő blobokban lesznek tárolva. Az esemény-munkamenetet futtató adatbázismotornak adott hozzáféréssel kell rendelkeznie ehhez a tárolóhoz. Ezt a hozzáférést egy SAS-jogkivonat létrehozásával és a jogkivonat hitelesítő adatokban való tárolásával biztosíthatja.

Az Azure SQL Database-ben adatbázis-hatókörű hitelesítő adatokat kell használnia. A felügyelt Azure SQL-példányban használjon kiszolgálói hatókörű hitelesítő adatokat.

Az Azure Storage-tárolóhoz létrehozott SAS-jogkivonatnak meg kell felelnie a következő követelményeknek:

  • Rendelkezik a rwl (Read, , WriteList) engedélyekkel.
  • A kezdési és a lejárati idő az esemény munkamenetének élettartamát foglalja magában.
  • Nincsenek IP-címkorlátozások.

Erőforrások szabályozása

Az Azure SQL Database-ben a kiterjesztett esemény-munkamenetek memóriahasználatát az adatbázismotor dinamikusan szabályozza az erőforrás-versengés minimalizálása érdekében.

Az esemény-munkamenetek számára korlátozott memória áll rendelkezésre:

  • Egyetlen adatbázisban a munkamenetek teljes memóriája legfeljebb 128 MB lehet.
  • Rugalmas készletben az egyes adatbázisokra az önálló adatbáziskorlátok vonatkoznak, és összesen nem haladhatják meg az 512 MB-ot.

Ha egy memóriakorlátra hivatkozó hibaüzenet jelenik meg, az alábbi korrekciós műveletek végezhetők el:

  • Kevesebb egyidejű esemény-munkamenet futtatása.
  • Az esemény-munkamenetek használata CREATE és ALTER utasításai csökkentik a munkamenet záradékában MAX_MEMORY megadott memória mennyiségét.

Feljegyzés

A Kiterjesztett eseményekben a MAX_MEMORY záradék két kontextusban jelenik meg: munkamenet létrehozásakor vagy módosításakor (a munkamenet szintjén), valamint a ring_buffer cél (célszinten) használatakor. A fenti korlátozások a munkamenet-szintű memóriára vonatkoznak.

Az Azure SQL Database-ben a megkezdett esemény-munkamenetek száma korlátozott:

  • Egyetlen adatbázisban a korlát 100.
  • Rugalmas készlet esetén a korlát készletenként 100 adatbázis-hatókörű munkamenet.

Sűrű rugalmas készletekben előfordulhat, hogy egy új kiterjesztett esemény munkamenet indítása memóriakorlátozások miatt meghiúsul, még akkor is, ha az elindított munkamenetek teljes száma 100 alatt van.

Az esemény-munkamenetek által felhasznált teljes memória megkereséséhez hajtsa végre a következő lekérdezést, miközben csatlakozik ahhoz az adatbázishoz, amelyben az esemény-munkamenet elindult:

SELECT name AS session_name,
       total_buffer_size + total_target_memory AS total_session_memory
FROM sys.dm_xe_database_sessions;

A rugalmas készlet teljes esemény munkamenet-memóriájának megkereséséhez ezt a lekérdezést a készlet minden adatbázisában végre kell hajtani.