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őreNO_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
Hot
a .
- Ne állítsa be a
- 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 ÖnCREATE EVENT SESSION
vagyALTER 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 azmaster
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
, ,Write
List
) 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
ésALTER
utasításai csökkentik a munkamenet záradékábanMAX_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.