Sdílet prostřednictvím


Vytvoření relace události s cílem event_file ve službě Azure Storage

Platí pro:Azure SQL DatabaseAzure SQL Managed InstanceSQL database ve Fabric

Základní kroky v tomto názorném postupu jsou:

  1. Vytvořte účet Azure Storage nebo vyhledejte existující vhodný účet, který se má použít.
  2. V tomto účtu úložiště vytvořte kontejner.
  3. Udělte databázovému stroji požadovaný přístup ke kontejneru pomocí přiřazení role RBAC nebo tokenu SAS.
  4. Vytvořte přihlašovací údaje v databázi nebo instanci, kde vytvoříte událostní relaci.
  5. Vytvořte, spusťte a použijte relaci události.

Vytvoření účtu úložiště a kontejneru

Podrobný popis vytvoření účtu úložiště ve službě Azure Storage najdete v tématu Vytvoření účtu úložiště. Naučíte se vytvořit účet úložiště pomocí webu Azure Portal, PowerShellu, Azure SQL, šablony ARM nebo šablony Bicep.

Použijte účet, který:

Dále vytvořte kontejner v tomto účtu úložiště pomocí webu Azure Portal. Kontejner můžete vytvořit také pomocí PowerShellu nebo pomocí Azure CLI.

Poznamenejte si názvy účtu úložiště a kontejneru, který jste vytvořili. Použijete je v následujících krocích.

Nejprve udělte přístup ke kontejneru. Ke čtení a zápisu dat událostí vyžaduje databázový stroj konkrétní přístup ke kontejneru. Tento přístup můžete udělit jedním ze dvou způsobů v závislosti na zvoleném typu ověřování:

  • Pokud používáte spravovanou identitu s ověřováním Microsoft Entra, přiřadíte roli RBAC přispěvatele dat objektů blob služby Storage pro kontejner ke spravované identitě logického serveru Azure SQL nebo spravované instance Azure SQL.

  • Pokud používáte ověřování založené na tajných klíčích, vytvoříte token SAS pro kontejner.

    Pokud chcete použít tento typ ověřování, musí být povolená možnost Povolit přístup k klíči účtu úložiště. Další informace najdete v tématu Zabránění autorizaci sdíleného klíče pro účet Azure Storage.

Udělení přístupu pomocí spravované identity

  1. Na webu Azure Portal přejděte na stránku Identita vašeho logického serveru Azure SQL nebo spravované instance Azure SQL a ujistěte se, že je přiřazená spravovaná identita. Další informace najdete v tématu Spravované identity v Microsoft Entra pro Azure SQL.

  2. Na webu Azure Portal přejděte do kontejneru úložiště, do kterého chcete ukládat data událostí. Na stránce Řízení přístupu (IAM) vyberte Přidat a přiřaďte roli RBAC přispěvatele dat objektů blob úložiště ke spravované identitě logického serveru nebo spravované instance SQL.

    Pokud má logický server nebo spravovaná instance SQL povolenou spravovanou identitu přiřazenou systémem, přiřaďte k této identitě roli. Pokud je identita přiřazená systémem zakázaná, ale existuje jedna nebo více identit přiřazených uživatelem, přiřaďte roli identitě přiřazené uživatelem označenou jako primární identita.

    Další informace najdete v tématu Přiřazení role Azure pro přístup k datům objektů blob.

  3. Vytvořte přihlašovací údaje pro pokyn databázovému stroji, aby se ověřil ve službě Azure Storage pomocí spravované identity pro konkrétní adresu URL kontejneru.

    V Azure SQL Database a databázi SQL v Microsoft Fabric vytvořte přihlašovací údaje s oborem databáze. Pomocí klientského nástroje, jako je SSMS, otevřete nové okno dotazu, připojte se k databázi, ve které vytvoříte relaci události, a vložte následující dávku T-SQL. Ujistěte se, že jste připojení k uživatelské databázi, a ne k master databázi.

    Note

    Spuštění následující dávky T-SQL vyžaduje CONTROL oprávnění k databázi. Ve výchozím nastavení náleží oprávnění vlastníkovi databáze (dbo), členům databázové role db_owner a správci logického serveru.

    /*
    (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';
    

Před provedením této dávky proveďte následující změnu:

  • Ve všech třech výskytech https://<storage-account-name>.blob.core.windows.net/<container-name>nahraďte <storage-account-name> názvem vašeho účtu úložiště a nahraďte <container-name> názvem kontejneru.

Udělení přístupu pomocí tokenu SAS

  1. Na webu Azure Portal přejděte do účtu úložiště a kontejneru, který jste vytvořili. Vyberte kontejner a přejděte na Nastavení > sdílených přístupových tokenů.

    Token SAS musí splňovat následující požadavky:

    • Oprávnění nastavená na Read, Write, Delete, List.
    • Čas zahájení a doba vypršení platnosti musí zahrnovat dobu životnosti relace události. Token SAS, který vytvoříte, funguje pouze v tomto časovém intervalu.
    • Nemá žádná omezení IP adres.

    Vyberte tlačítko Generovat token SAS a adresu URL. Token SAS je v poli Token SAS objektu blob. Můžete ho zkopírovat, abyste ho mohli použít v dalším kroku.

    Important

    Token SAS poskytuje přístup pro čtení a zápis k tomuto kontejneru. Zacházejte s ním stejně jako s heslem nebo s jakýmkoli jiným tajným kódem.

    Snímek obrazovky Se sdílenými přístupovými tokeny pro kontejner Azure Storage s vygenerovaným tokenem SAS pro ukázkový kontejner

  2. Vytvořte přihlašovací údaje pro uložení tokenu SAS.

    Uložte token SAS do přihlašovacích údajů v oboru databáze. Pomocí klientského nástroje, jako je SSMS, otevřete nové okno dotazu, připojte se k databázi, ve které vytvoříte relaci události, a vložte následující dávku T-SQL. Ujistěte se, že jste připojení k uživatelské databázi, a ne k master databázi.

    Note

    Spuštění následující dávky T-SQL vyžaduje CONTROL oprávnění k databázi. Ve výchozím nastavení je oprávnění drženo vlastníkem databáze (dbo), členy databázové role db_owner a správcem logického serveru.

    /*
    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>';
    

    Před provedením této dávky proveďte následující změny:

    • Ve všech třech výskytech https://<storage-account-name>.blob.core.windows.net/<container-name>nahraďte <storage-account-name> názvem vašeho účtu úložiště a nahraďte <container-name> názvem kontejneru.
    • SECRET V klauzuli nahraďte <sas-token> tokenem SAS, který jste zkopírovali v předchozím kroku.

Vytvoření, spuštění a zastavení relace události

Po vytvoření přihlašovacích údajů můžete vytvořit relaci události. Na rozdíl od vytváření přihlašovacích údajů nevyžaduje CONTROL vytvoření relace událostí oprávnění. Po vytvoření přihlašovacích údajů můžete vytvořit relace událostí, i když máte více omezených oprávnění. Viz Oprávnění pro konkrétní potřebná oprávnění.

  1. V sadě SQL Server Management Studio (SSMS) se připojte k logickému serveru Azure SQL Database.

  2. Rozbalte uzel Rozšířené události ve složce Správa .

  3. Klikněte pravým tlačítkem myši na složku Relace a vyberte Možnost Nová relace....

  4. Na stránce Obecné zadejte název relace, což bude example-session pro následující vzorový kód.

  5. Na stránce Události vyberte jednu nebo více událostí, které chcete přidat do relace. V tomto příkladu sql_batch_starting jsme vybrali událost.

  6. Na stránce Úložiště dat vyberte event_file jako cílový typ.

    • Pro místní soubor událostí vyberte cíl místního souboru.
    • V případě objektu blob souboru události uloženého ve službě Azure Storage vložte adresu URL kontejneru úložiště do pole Adresa URL úložiště . Na konec této adresy URL zadejte lomítko (/) následované názvem souboru (objekt blob). Například: https://<storage-account-name>.blob.core.windows.net/<container-name>/example-session.xel.

    Snímek obrazovky s dialogem Nové relace SSMS zobrazující stránku výběru události s vybranou událostí sql_batch_starting.

  7. Na stránce Úložiště dat vyberte event_file jako cílový typ a vložte adresu URL kontejneru úložiště do pole Adresa URL úložiště. Na konec této adresy URL zadejte lomítko (/) následované názvem souboru (objekt blob). V našem příkladu je example-session.xelnázev objektu blob a celá adresa URL je https://<storage-account-name>.blob.core.windows.net/<container-name>/example-session.xel.

    Note

    Pro službu SQL Managed Instance místo vložení adresy URL kontejneru úložiště na stránce Úložiště dat použijte tlačítko Skript k vytvoření skriptu T-SQL relace. Zadejte adresu URL kontejneru jako hodnotu argumentu filename , podobně jako v příkladu spravované instance SQL níže, a spusťte skript pro vytvoření relace.

    Snímek obrazovky dialogového okna Nová relace SSMS zobrazující stránku výběru datového úložiště s vybraným cílovým objektem event_file a zadanou adresou URL úložiště.

  8. Teď, když je relace nakonfigurovaná, můžete výběrem tlačítka Skript vytvořit skript T-SQL relace a uložit ho pro pozdější použití. Tady je skript pro naši ukázkovou relaci:

    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. Vyberte OK a vytvořte relaci.

  2. V Průzkumník objektů rozbalte složku Relace a zobrazte relaci události, kterou jste vytvořili. Ve výchozím nastavení se relace při vytváření nespusťe. Relaci spustíte tak, že kliknete pravým tlačítkem myši na název relace a vyberete Spustit relaci. Později ji můžete zastavit tak, že po spuštění relace vyberete možnost Zastavit relaci.

Jak se spouštějí dávky T-SQL, relace zapisuje události do blobu example-session.xel v kontejneru úložiště.

Pokud chcete relaci zastavit, klikněte na ni pravým tlačítkem v Průzkumník objektů a vyberte Zastavit relaci.

Řešení potíží s relacemi událostí s cílem event_file ve službě Azure Storage

Následující seznam obsahuje chyby, se kterými se můžete setkat při spuštění rozšířené relace událostí, která používá Azure Storage, s možnými vysvětleními chyby.

  • Operační systém vrátil chybu 5: Přístup byl odepřen.
    • Pokud používáte ověřování spravované identity:
    • Pokud používáte ověřování pomocí tokenu SAS:
      • Účet úložiště má povolenou bránu firewall. To se nepodporuje u relací událostí, které používají ověřování tokenu SAS.
      • Token SAS nemá dostatečná oprávnění nebo vypršela jeho platnost. Další informace najdete v tématu Udělení přístupu pomocí tokenu SAS.
      • Pokud používáte hraniční síť s vynuceným režimem zabezpečení sítě, pravidla přístupu, která umožňují neomezenou odchozí komunikaci z databáze a neomezenou příchozí komunikaci s účtem úložiště nejsou na místě.
  • Operační systém vrátil chybu 86: Zadané síťové heslo není správné.
    • Neexistují žádné přihlašovací údaje s oborem databáze (pro Azure SQL Database) ani přihlašovací údaje s oborem serveru (pro spravovanou instanci Azure SQL nebo SQL Server) s názvem odpovídajícím adrese URL kontejneru objektů blob. Další informace najdete v příkladech udělení přístupu pomocí spravované identity nebo udělení přístupu pomocí tokenu SAS.
    • Název přihlašovacích údajů končí lomítkem (/). Název přihlašovacích údajů by měl končit názvem kontejneru, který neobsahuje koncové lomítko.
  • Operační systém vrátil chybu 3: Systém nemůže najít zadanou cestu.
    • Kontejner zadaný v adrese URL kontejneru objektů blob neexistuje.
  • Operační systém vrátil chybu 13: Data jsou neplatná.
    • V blob kontejneru je zásada neměnnosti. Neměnné úložiště není pro relace událostí podporováno.
    • Účet úložiště má povolený hierarchický obor názvů. Pro relace událostí se nepodporují účty úložiště s povoleným hierarchickým oborem názvů.

Zobrazení dat události

Data událostí můžete zobrazit v uživatelském rozhraní prohlížeče událostí aplikace SQL Server Management Studio (SSMS), kde můžete k analýze zachycených dat použít filtry a agregace. Další informace o používání prohlížeče událostí v nástroji SSMS naleznete v tématu Zobrazení dat událostí v aplikaci SQL Server Management Studio.

Zobrazení dat událostí pomocí T-SQL

Pokud chcete číst data relace událostí pomocí T-SQL, použijte funkci sys.fn_xe_file_target_read_file(). Pokud chcete tuto funkci použít v databázi nebo instanci, která se liší od té, ve které byla relace událostí vytvořena, musíte na úložišti dat událostí udělit databázovému stroji přístup k úložnému kontejneru. Viz Udělení přístupu pomocí spravované identity nebo udělení přístupu pomocí tokenu SAS.

Podrobnější návod najdete v tématu Vytvoření relace událostí v nástroji SSMS.

Stažení souborů xel ze služby Azure Storage

Tip

Pokud používáte SSMS verze 19.2 nebo novější, nemusíte stahovat xel soubory, jak je popsáno v této části. V těchto verzích SSMS čte soubory xel přímo z Azure Storage kontejneru pro každou relaci. Další informace najdete v blogovém příspěvku o vylepšení rozšířených událostí Azure SQL .

xel Stáhněte objekt blob pro relaci z kontejneru úložiště a uložte ho jako místní soubor. Na webu Azure Portal vyhledejte použitý účet úložiště, v části Úložiště dat vyberte Kontejnery a vyberte kontejner, který jste vytvořili pro relaci událostí. Objekt blob relace má název relace jako první část jejího názvu s číselnou příponou. Výběrem tří teček (...) zobrazte místní nabídku objektu blob a vyberte Stáhnout.

Můžete nainstalovat Průzkumník služby Azure Storage a stáhnout několik xel objektů blob v jedné operaci.

Jakmile se xel soubor stáhne, otevřete ho v aplikaci SSMS. V hlavní nabídce SSMS přejděte na Soubor a vyberte Otevřít. Pokud máte jeden xel soubor, vyberte Soubor... a přejděte na stažený soubor. Pokud máte více xel souborů vygenerovaných stejnou relací událostí (označuje se jako soubory vrácení), můžete použít dialogové okno Sloučit rozšířené soubory událostí... a otevřít je všechny v prohlížeči událostí.