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


Esemény-munkamenet létrehozása event_file targettel az Azure Storage rendszerébe

A következőkre vonatkozik:Azure SQL DatabaseAzure SQL Managed InstanceSQL-adatbázis a Fabricben

Az útmutató magas szintű lépései a következők:

  1. Hozzon létre egy Azure Storage-fiókot, vagy keressen egy meglévő megfelelő fiókot.
  2. Hozzon létre egy tárolót ebben a tárfiókban.
  3. Adjon hozzáférést az adatbázismotornak a tárolóhoz RBAC-szerepkör-hozzárendeléssel vagy SAS-jogkivonattal.
  4. Hozzon létre egy hitelesítő adatot abban az adatbázisban vagy példányban, ahol az esemény-munkamenetet hozza létre.
  5. Esemény-munkamenet létrehozása, indítása és használata.

Tárfiók és tároló létrehozása

A tárfiók Azure Storage-ban való létrehozásának részletes leírását a Tárfiók létrehozása című témakörben találja. Megtudhatja, hogyan hozhat létre tárfiókot az Azure Portal, a PowerShell, az Azure SQL, egy ARM-sablon vagy egy Bicep-sablon használatával.

Használjon olyan fiókot, amely:

Ezután hozzon létre egy tárolót ebben a tárfiókban az Azure Portal használatával. Tárolót a PowerShell vagy az Azure CLI használatával is létrehozhat.

Jegyezze fel a létrehozott tárfiók és tároló nevét. Ezeket a következő lépésekben fogja használni.

Először adjon hozzáférést a tárolóhoz. Az eseményadatok olvasásához és írásához az adatbázismotornak speciális hozzáférésre van szüksége a tárolóhoz. Ezt a hozzáférést kétféleképpen engedélyezheti, a választott hitelesítési típustól függően:

Hozzáférés biztosítása felügyelt identitással

  1. Az Azure Portalon keresse meg az Azure SQL logikai kiszolgáló vagy felügyelt Azure SQL-példány identitáslapját , és győződjön meg arról, hogy egy felügyelt identitás van hozzárendelve. További információkért lásd: Felügyelt identitások az Azure SQL-hez készült Microsoft Entra rendszerben.

  2. Az Azure Portalon lépjen arra a tárolóra, ahol eseményadatokat szeretne tárolni. A Hozzáférés-vezérlés (IAM) lapon válassza a Hozzáadás lehetőséget a Storage Blob Data Contributor RBAC szerepkör hozzárendeléséhez a logikai kiszolgáló vagy a felügyelt SQL-példány felügyelt identitásához.

    Ha a logikai kiszolgáló vagy a felügyelt SQL-példány rendelkezik a rendszer által hozzárendelt felügyelt identitással, rendelje hozzá a szerepkört ehhez az identitáshoz. Ha a rendszer által hozzárendelt identitás le van tiltva, de van egy vagy több felhasználó által hozzárendelt identitás, rendelje hozzá a szerepkört az elsődleges identitásként kijelölt felhasználó által hozzárendelt identitáshoz.

    További információ: Azure-szerepkör hozzárendelése blobadatokhoz való hozzáféréshez.

  3. Hozzon létre egy hitelesítő adatot, amely arra utasítja az adatbázismotort, hogy hitelesítse magát az Azure Storage-ban egy adott tároló URL-címéhez tartozó felügyelt identitás használatával.

    Az Azure SQL Database-ben és a Microsoft Fabric sql-adatbázisában hozzon létre egy adatbázis-hatókörű hitelesítő adatot. Egy ügyféleszköz, például az SSMS használatával nyisson meg egy új lekérdezési ablakot, csatlakozzon ahhoz az adatbázishoz, ahol az esemény munkamenetet hozza létre, és illessze be a következő T-SQL-köteget. Győződjön meg arról, hogy a felhasználói adatbázishoz csatlakozik, és nem az master adatbázishoz.

    Note

    A következő T-SQL-köteg végrehajtásához adatbázis-engedély CONTROL szükséges. Alapértelmezés szerint az engedélyt az adatbázis tulajdonosa (dbo), az db_owner adatbázis-szerepkör tagjai és a logikai kiszolgáló rendszergazdája birtokolja.

    /*
    (Re-)create a database scoped credential if needed.
    */
    IF EXISTS
        (SELECT 1 FROM sys.database_credentials
        WHERE name = 'https://<storage-account-name>.blob.core.windows.net/<container-name>'
        )
        DROP DATABASE SCOPED CREDENTIAL
            [https://<storage-account-name>.blob.core.windows.net/<container-name>];
    
    /*
    The name of the credential must match the URL of the blob container.
    When using managed identity, the credential does not contain a secret.
    */
    CREATE DATABASE SCOPED CREDENTIAL
        [https://<storage-account-name>.blob.core.windows.net/<container-name>]
    WITH IDENTITY = 'MANAGED IDENTITY';
    

A köteg végrehajtása előtt végezze el a következő módosítást:

  • Mindhárom előfordulás esetén cserélje le a https://<storage-account-name>.blob.core.windows.net/<container-name>-t a tárfiók nevére, és a <storage-account-name>-t a tároló nevére.

Hozzáférés biztosítása SAS-jogkivonat használatával

  1. Az Azure Portalon keresse meg a létrehozott tárfiókot és tárolót. Válassza ki a tárolót, és keresse meg a Beállítások > megosztott hozzáférési jogkivonatokat.

    Az SAS-jogkivonatnak meg kell felelnie a következő követelményeknek:

    • Engedélyek beállításaRead: , Write, DeleteList.
    • A kezdési és a lejárati időnek az esemény munkamenetének élettartamát kell magában foglalnia. A létrehozott SAS-jogkivonat csak ezen időintervallumon belül működik.
    • Nincsenek IP-címkorlátozások.

    Válassza az SAS-jogkivonat és az URL-cím létrehozása gombot. Az SAS-jogkivonat a Blob SAS-jogkivonat mezőjében található. A következő lépéshez átmásolhatja és használhatja.

    Important

    Az SAS-jogkivonat olvasási és írási hozzáférést biztosít ehhez a tárolóhoz. Kezelje úgy, mintha egy jelszót vagy bármilyen más titkos kódot kezelne.

    Képernyőkép egy Azure Storage-tároló megosztott hozzáférésű jogkivonatainak képernyőjéről egy példatárolóhoz létrehozott SAS-jogkivonattal.

  2. Hozzon létre egy hitelesítő adatot az SAS-jogkivonat tárolásához.

    Az SAS-jogkivonat tárolása adatbázis-hatókörű hitelesítő adatokban. Egy ügyféleszköz, például az SSMS használatával nyisson meg egy új lekérdezési ablakot, csatlakozzon ahhoz az adatbázishoz, ahol az esemény munkamenetet hozza létre, és illessze be a következő T-SQL-köteget. Győződjön meg arról, hogy a felhasználói adatbázishoz csatlakozik, és nem az master adatbázishoz.

    Note

    A következő T-SQL-köteg végrehajtásához adatbázis-engedély CONTROL szükséges. Alapértelmezés szerint az engedélyt az adatbázis tulajdonosa (dbo), az db_owner adatbázis-szerepkör tagjai és a logikai kiszolgáló rendszergazdája birtokolja.

    /*
    Create a master key to protect the secret of the credential
    */
    IF NOT EXISTS (SELECT 1
                  FROM sys.symmetric_keys
                  WHERE name = '##MS_DatabaseMasterKey##')
    
    CREATE MASTER KEY;
    
    /*
    (Re-)create a database scoped credential if needed.
    */
    IF EXISTS
        ( SELECT 1 FROM sys.database_credentials
        WHERE name = 'https://<storage-account-name>.blob.core.windows.net/<container-name>'
        )
        DROP DATABASE SCOPED CREDENTIAL
            [https://<storage-account-name>.blob.core.windows.net/<container-name>];
    
    /*
    The name of the credential must match the URL of the blob container.
    The secret is the SAS token for the container.
    */
    CREATE DATABASE SCOPED CREDENTIAL
        [https://<storage-account-name>.blob.core.windows.net/<container-name>]
    WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
        SECRET = '<sas-token>';
    

    A köteg végrehajtása előtt végezze el a következő módosításokat:

    • Mindhárom előfordulás esetén cserélje le a https://<storage-account-name>.blob.core.windows.net/<container-name>-t a tárfiók nevére, és a <storage-account-name>-t a tároló nevére.
    • A SECRET szakaszban/cserélje ki <sas-token> az előző lépésben másolt SAS-jogkivonatra.

Esemény-munkamenet létrehozása, indítása és leállítása

A hitelesítő adatok létrehozása után létrehozhatja az esemény-munkamenetet. A hitelesítő adatok létrehozásával ellentétben az esemény-munkamenetek létrehozásához nincs szükség engedélyre CONTROL . A hitelesítő adatok létrehozása után akkor is létrehozhat esemény-munkameneteket, ha korlátozottabb engedélyekkel rendelkezik. Tekintse meg a szükséges engedélyek.

  1. Az SQL Server Management Studióban (SSMS) csatlakozzon az Azure SQL Database logikai kiszolgálóhoz.

  2. Bontsa ki a Kiterjesztett események csomópontot a Felügyeleti mappa alatt.

  3. Kattintson a jobb gombbal a Munkamenetek mappára, és válassza az Új munkamenet...lehetőséget.

  4. Az Általános lapon adja meg a munkamenet nevét, amely a következő kódminta lesz example-session .

  5. Az Események lapon válasszon ki egy vagy több eseményt, amely hozzáadható a munkamenethez. Ebben a példában az eseményt sql_batch_starting választottuk ki.

  6. Az Adattárolás lapon válassza ki event_file a céltípust.

    • Helyi eseményfájl esetén válassza ki a helyi fájlcélt.
    • Az Azure Storage-ban tárolt eseményfájl-blobok esetében illessze be a tároló URL-címét a Storage URL-mezőbe . Írjon be egy perjelet (/) az URL-cím végére, majd a fájl (blob) nevét. Például: https://<storage-account-name>.blob.core.windows.net/<container-name>/example-session.xel.

    Képernyőkép az Új munkamenet SSMS párbeszédpanelről, amelyen az eseményválasztó lap látható, amelyen a sql_batch_starting esemény van kiválasztva.

  7. Az Adattároló lapon válassza ki event_file a céltípust, és illessze be a tároló URL-címét a Storage URL-mezőbe . Írjon be egy perjelet (/) az URL-cím végére, majd a fájl (blob) nevét. A példánkban a blob neve, example-session.xela teljes URL-cím pedig .https://<storage-account-name>.blob.core.windows.net/<container-name>/example-session.xel

    Note

    Felügyelt SQL-példány esetén a Adattárolás oldalon a tároló URL-címének beillesztése helyett használja a Szkript gombot a munkamenet T-SQL-szkriptjének létrehozásához. Adja meg a tároló URL-címét az filename argumentum értékeként az alábbi SQL Managed Instance példához hasonlóan, és hajtsa végre a szkriptet a munkamenet létrehozásához.

    Képernyőkép az Új munkamenet SSMS párbeszédpanelről, amelyen az adattárolás kiválasztása lap látható, amelyen egy event_file kijelölt cél és egy beírt tár URL-címe látható.

  8. Most, hogy a munkamenet konfigurálva lett, a Szkript gombra kattintva létrehozhat egy T-SQL-szkriptet a munkamenetből, és mentheti későbbi használatra. A példamunkamenet szkriptje a következő:

    CREATE EVENT SESSION [example-session] ON DATABASE
    ADD EVENT sqlserver.sql_batch_starting
    ADD TARGET package0.event_file
        (SET filename=N'https://<storage-account-name>.blob.core.windows.net/<container-name>/example-session.xel');
    GO
    

  1. A munkamenet létrehozásához kattintson az OK gombra .

  2. Az Object Explorerben bontsa ki a Munkamenetek mappát a létrehozott esemény-munkamenet megtekintéséhez. Alapértelmezés szerint a munkamenet létrehozásakor nem indul el. A munkamenet elindításához kattintson a jobb gombbal a munkamenet nevére, és válassza a Munkamenet indítása parancsot. Később a munkamenet futtatása után a Munkamenet leállítása lehetőséget választva is leállíthatja.

A T-SQL-kötegek végrehajtásakor a munkamenet eseményeket ír a example-session.xel tároló blobjának.

A munkamenet leállításához kattintson rá a jobb gombbal az Object Explorerben, és válassza a Munkamenet leállítása lehetőséget.

Esemény-munkamenetek hibaelhárítása event_file-célokkal az Azure Storage-ban

Az alábbi lista az Azure Storage-t használó kiterjesztett esemény-munkamenet indításakor előforduló hibákat tartalmazza a hiba lehetséges magyarázatával.

  • Az operációs rendszer 5. hibát adott vissza: "Hozzáférés megtagadva."
    • Felügyelt identitás hitelesítése esetén:
    • SAS-jogkivonat-hitelesítés használata esetén:
      • A tárfiók tűzfala engedélyezve van. Ez sas-jogkivonat-hitelesítést használó esemény-munkamenetek esetében nem támogatott.
      • Az SAS-jogkivonat nem rendelkezik megfelelő engedélyekkel, vagy lejárt. További információ: Hozzáférés biztosítása SAS-jogkivonat használatával.
      • Ha a hálózati biztonsági szegélyt kényszerítő móddal használja, a hozzáférési szabályok nem engedélyezik az adatbázisból való korlátlan kimenő kommunikációt, és a tárfiók felé irányuló korlátlan bejövő kommunikáció nincs érvényben.
  • Az operációs rendszer a következő 86-os hibát adta vissza: "A megadott hálózati jelszó nem helyes."
    • Nem létezik az Azure SQL Database esetében adatbázis-hatókörű hitelesítő adat, illetve az Azure SQL Managed Instance vagy SQL Server esetében kiszolgáló-hatókörű hitelesítő adat, amelynek neve egyezik a blobtároló URL-címével. További információkért tekintse meg a felügyelt identitással való hozzáférés megadására vagy a hozzáférés SAS-jogkivonattal való engedélyezésére vonatkozó példákat.
    • A hitelesítő adatok neve perjellel (/) végződik. A hitelesítőadat-névnek a tároló nevével kell végződnie, amely nem tartalmazza a záró perjelet.
  • Az operációs rendszer 3. hibát adott vissza: "A rendszer nem találja a megadott elérési utat."
    • A blobtároló URL-címében megadott tároló nem létezik.
  • Az operációs rendszer 13- os hibát adott vissza: "Az adatok érvénytelenek."
    • A blobtárolón egy módosíthatatlansági szabályzat található. Az esemény-munkamenetek nem támogatják a nem módosítható tárolást.
    • A tárfiókban engedélyezve van a hierarchikus névtér . A hierarchikus névtérrel rendelkező tárfiókok nem támogatottak az esemény-munkamenetekben.

Eseményadatok megtekintése

Az eseményadatokat az SQL Server Management Studio (SSMS) eseménynapló felhasználói felületén tekintheti meg, ahol szűrőkkel és összesítésekkel elemezheti a rögzített adatokat. Az eseménynapló SSMS-ben való használatával kapcsolatos további információkért lásd: Eseményadatok megtekintése az SQL Server Management Studióban.

Eseményadatok megtekintése a T-SQL használatával

Az esemény-munkamenet adatainak T-SQL használatával való olvasásához használja a sys.fn_xe_file_target_read_file() függvényt. Ha ezt a függvényt egy olyan adatbázisban vagy példányban szeretné használni, amely eltér az esemény-munkamenet létrehozásának helyétől, hozzáférést kell adnia a tárolón a tároló adatbázismotorjának az eseményadat-blobokkal együtt. Lásd: Hozzáférés biztosítása felügyelt identitással vagy hozzáférés biztosítása SAS-jogkivonat használatával.

Részletesebb útmutató: Esemény-munkamenet létrehozása az SSMS-ben.

xel-fájlok letöltése az Azure Storage-ból

Tip

Ha az SSMS 19.2-es vagy újabb verzióját használja, nem kell letöltenie xel a fájlokat az ebben a szakaszban leírtak szerint. Ezekben a verziókban az SSMS közvetlenül az Azure Storage-tárolóból olvassa be az xel egyes munkamenetek fájljait. További információ: Bővített események javítása az Azure SQL-ben blog.

Töltse le a xel munkamenet blobot a tárolóból, és mentse helyi fájlként. Az Azure Portalon keresse meg a használt tárfiókot, válassza a Tárolók lehetőséget az Adattárolás területen, és válassza ki az esemény munkamenetéhez létrehozott tárolót. A munkamenethez tartozó blob neve a munkamenet nevével kezdődik, és egy numerikus utótaggal végződik. Válassza ki a három pontot (...), hogy megjelenítse a blob helyi menüjét, majd válassza a Letöltés lehetőséget.

Az Azure Storage Explorert úgy telepítheti, hogy több xel blobot töltsön le egyetlen műveletben.

xel A fájl letöltése után nyissa meg az SSMS-ben. Az SSMS főmenüjében válassza a Fájl lehetőséget, és válassza a Megnyitás lehetőséget. Ha egyetlen xel fájllal rendelkezik, válassza a Fájl lehetőséget, és keresse meg a letöltött fájlt. Ha ugyanazon esemény munkamenet által létrehozott több xel fájl (más néven rollover fájlok) vannak létrehozva, a Kiterjesztett eseményfájlok egyesítése... párbeszédpanelen megnyithatja az összeset az eseménymegjelenítőben.