Megosztás a következőn keresztül:


Bővített események az Azure SQL-ben

A következőkre vonatkozik:Azure SQL DatabaseAzure SQL Managed InstanceSQL-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_file Azure Storage-ban, nem pedig lemezen tárolt fájlokat.
    • Az SQL Serverben a event_file cél lemezen vagy blobokon tárolt fájlokat használhat az Azure Storage-ban.
  • 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_file tartalmaz 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_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

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_file használja:
    • A munkamenethez hozzáadott eseményektől függően a cél által event_file lé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 .
  • 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 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 az master adatbá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/ read
    Microsoft.Storage/storageAccounts/blobServices/containers/blobs/ delete
    Microsoft.Storage/storageAccounts/blobServices/containers/blobs/ read
    Microsoft.Storage/storageAccounts/blobServices/containers/blobs/ write
  • Hozzon 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.

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 és ALTER utasításai csökkentik a munkamenet záradékában MAX_MEMORY megadott 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.