Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:Azure SQL Database
Azure SQL Managed Instance
SQL-adatbázis a Fabricben
A Bővített események bemutatása:
Az Azure SQL Database-ben, a Fabricben lévő SQL Database-ben és a felügyelt Azure SQL-példányban a 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:
- Az Azure SQL Database-ben, a Fabric SQL Database-ben és a felügyelt Azure SQL-példányban a cél mindig blobokat használ az
event_fileAzure Storage-ban, nem pedig lemezen tárolt fájlokat.- Az SQL Serverben a
event_filecél lemezen vagy blobokon tárolt fájlokat használhat az Azure Storage-ban.
- Az SQL Serverben a
- Az Azure SQL Database-ben és az SQL Database-ben a Fabricben 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
A bővített események gyors használatbavételéhez két bemutató példa is van:
-
Az Azure Storage-ban hozzon létre egy esemény-munkamenetet egy event_file célponttal. Ez a példa bemutatja, hogyan rögzíthet eseményadatokat egy fájlban (blobban) az Azure Storage-ban a cél használatával, és
event_filetartalmaz a gyakori hibákhoz. 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 esemény-munkamenetet egy ring_buffer céltá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_buffercé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
A kiterjesztett események biztonságos, 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_filehasználja:- A munkamenethez hozzáadott eseményektől függően a cél által
event_filelétrehozott fájlok bizalmas adatokat tartalmazhatnak. A szükségtelen olvasási hozzáférés elkerülése érdekében gondosan tekintse át az RBAC-szerepkör-hozzárendeléseket és a tárfiókon és a tárolón található hozzáférés-vezérlési listákat (ACL- (ACL-eket), beleértve az örökölt hozzáférést is. Kövesse a minimális jogosultság elvét. - 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 . - Ne engedélyezze a tárfiók hierarchikus névterét .
- A munkamenethez hozzáadott eseményektől függően a cél által
- 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 = ONaz ÖnCREATE EVENT SESSIONvagyALTER EVENT SESSIONaz 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 sok 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 azmasteradatbázisban. Ez befolyásolhatja a bejelentkezés feldolgozását, é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-ben, a Fabricben található SQL Database-ben, az Azure SQL Managed Instance-ben és az SQL Serverben támogatott kiterjesztett események céljairól további információt a Bővített események céljai című témakörben talál.
Transact-SQL különbségek
Amikor végrehajtja a CREATE EVENT SESSION, ALTER EVENT SESSION és DROP EVENT SESSION 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.
Az egyes platformok katalógusnézeteinek listáját a Bővített események katalógusnézetei című témakörben találja.
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.
Az egyes platformok DMV-jeinek listáját a Bővített események dinamikus felügyeleti nézetei című témakörben találja.
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 elérhető eseményeket, műveleteket és célokat a következő lekérdezéssel szerezheti be:
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;
Permissions
A részletes engedélyek platformonkénti megtekintéséhez tekintse meg az engedélyeket .
Tároló engedélyezése és vezérlése
Ha a event_file célt Azure Storage-blobokkal használja, az esemény-munkamenetet futtató adatbázismotornak adott hozzáféréssel kell rendelkeznie a blobtárolóhoz. Ezt a hozzáférést a következő módok egyikével engedélyezheti:
Rendelje hozzá a Storage Blob Data Contributor RBAC-szerepkört a tárolóban található Azure SQL logikai kiszolgáló vagy Azure SQL felügyelt példány felügyelt identitásához , és hozzon létre egy hitelesítő adatot, amely utasítja az adatbázismotort, hogy használjon felügyelt identitást a hitelesítéshez.
A storage blobadatok közreműködője RBAC-szerepkör hozzárendelése helyett a következő RBAC-műveleteket rendelheti hozzá:
Namespace Action Microsoft.Storage/storageAccounts/blobServices/containers/readMicrosoft.Storage/storageAccounts/blobServices/containers/blobs/deleteMicrosoft.Storage/storageAccounts/blobServices/containers/blobs/readMicrosoft.Storage/storageAccounts/blobServices/containers/blobs/writeHozzon létre egy SAS-jogkivonatot a tárolóhoz, és tárolja a jogkivonatot egy hitelesítő adatban.
Az Azure SQL Database-ben adatbázis-hatókörű hitelesítő adatokat kell használnia. A felügyelt Azure SQL-példányban és az SQL Serverben 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 (
rwdlRead,Write,Delete,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.
- Rendelkezik (
Erőforrás-szabályozás
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ésALTERutasításai csökkentik a munkamenet záradékábanMAX_MEMORYmegadott memória mennyiségét.
Note
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.