Een gebeurtenissessie maken met een event_file-doel in Azure Storage

Van toepassing op: Azure SQL DatabaseAzure SQL Managed Instance

De stappen op hoog niveau in dit scenario zijn:

  1. Maak een Azure Storage-account of zoek een bestaand geschikt account om te gebruiken
  2. Een container maken in dit opslagaccount
  3. Een SAS-token maken met de vereiste toegang voor deze container
  4. Een referentie maken voor het opslaan van het SAS-token in de database of het beheerde exemplaar waar u de gebeurtenissessie maakt
  5. Een gebeurtenissessie maken, starten en gebruiken

Een opslagaccount en container maken

Zie Een opslagaccount maken voor een gedetailleerde beschrijving van het maken van een opslagaccount in Azure Storage. U leert hoe u een opslagaccount maakt met behulp van Azure Portal, PowerShell, Azure SQL, een ARM-sjabloon of een Bicep-sjabloon.

U wordt aangeraden een account te gebruiken dat:

  • Is een Standard general-purpose v2 account.
  • Heeft het redundantietype dat overeenkomt met de redundantie van de Azure SQL-database, elastische pool of het beheerde exemplaar waarin gebeurtenissessies worden gemaakt.
  • Maakt gebruik van de Hotblob-toegangslaag.
  • Bevindt zich in dezelfde Azure-regio als de Azure SQL-database, elastische pool of het beheerde exemplaar.

Maak vervolgens een container in dit opslagaccount met behulp van Azure Portal. U kunt ook een container maken met Behulp van PowerShell of Azure CLI.

Noteer de namen van het opslagaccount en de container die u gebruikt.

Een SAS-token maken

De database-engine die de gebeurtenissessie uitvoert, heeft specifieke toegang tot de opslagcontainer nodig. U verleent deze toegang door een SAS-token voor de container te maken. Dit token moet voldoen aan de volgende vereisten:

  • rwl De machtigingen (Read, Write, List) hebben
  • De begin- en verlooptijd hebben die de levensduur van de gebeurtenissessie omvat
  • Geen IP-adresbeperkingen hebben

Zoek in Azure Portal het opslagaccount en de container die u hebt gemaakt. Selecteer de container en navigeer naar Instellingen > Gedeelde toegangstokens. Stel machtigingen in op Read, Writeen Liststel de begin- en vervaldatum en -tijd in. Het SAS-token dat u maakt, werkt alleen binnen dit tijdsinterval.

Selecteer de knop SAS-token en URL genereren. Het SAS-token bevindt zich in het vak Blob SAS-token . U kunt deze kopiëren voor gebruik in de volgende stap.

Belangrijk

Het SAS-token biedt lees- en schrijftoegang tot deze container. Behandel het zoals u een wachtwoord of een ander geheim zou behandelen.

Screenshot of the Shared Access Tokens screen for an Azure Storage container, with a generated SAS token for an example container.

Een referentie maken om het SAS-token op te slaan

In Azure SQL Database gebruikt u een referentie binnen het databasebereik om het SAS-token op te slaan. In Azure SQL Managed Instance gebruikt u een referentie met serverbereik.

Sla het SAS-token op in een databasereferentie. Open met behulp van een clienthulpprogramma, zoals SSMS of ADS, een nieuw queryvenster, maak verbinding met de database waar u de gebeurtenissessie maakt en plak de volgende T-SQL-batch. Zorg ervoor dat u bent verbonden met uw gebruikersdatabase en niet met de master database.

Notitie

Voor het uitvoeren van de volgende T-SQL-batch is de CONTROL databasemachtiging vereist, die wordt bewaard door de eigenaar van de database (dbo), door de leden van de db_owner databaserol en door de beheerder van de logische server.

/*
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.
The name of the credential must match the URL of the blob container.
*/
IF EXISTS (
          SELECT 1
          FROM sys.database_credentials
          WHERE name = 'https://exampleaccount4xe.blob.core.windows.net/xe-example-container'
          )
    DROP DATABASE SCOPED CREDENTIAL [https://exampleaccount4xe.blob.core.windows.net/xe-example-container];

/*
The secret is the SAS token for the container. The Read, Write, and List permissions are set.
*/
CREATE DATABASE SCOPED CREDENTIAL [https://exampleaccount4xe.blob.core.windows.net/xe-example-container]
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
     SECRET = 'sp=rwl&st=2023-10-17T23:28:32Z&se=2023-10-18T07:28:32Z&spr=https&sv=2022-11-02&sr=c&sig=REDACTED';

Voordat u deze batch uitvoert, moet u de volgende wijzigingen aanbrengen:

  • Vervang in alle drie gevallen https://exampleaccount4xe.blob.core.windows.net/xe-example-containerexampleaccount4xe de naam van uw opslagaccount en vervang deze door xe-example-container de naam van uw container.
  • Vervang de hele tekenreeks tussen de enkele aanhalingstekens in de SECRET component door het SAS-token dat u in de vorige stap hebt gekopieerd.

Een gebeurtenissessie maken, starten en stoppen

Zodra de referentie met het SAS-token is gemaakt, kunt u de gebeurtenissessie maken. Voor het CONTROL maken van een gebeurtenissessie is de machtiging niet vereist. Als de referentie met het juiste SAS-token al bestaat, kunt u gebeurtenissessies maken, zelfs als u een meer beperkte set machtigingen hebt. Zie machtigingen voor de specifieke machtigingen die nodig zijn.

Als u een nieuwe gebeurtenissessie in SSMS wilt maken, vouwt u het knooppunt Uitgebreide gebeurtenissen uit. Dit knooppunt bevindt zich onder de databasemap in Azure SQL Database en onder de map Beheer in Azure SQL Managed Instance. Klik met de rechtermuisknop op de map Sessies en selecteer Nieuwe sessie.... Voer op de pagina Algemeen een naam in voor de sessie, in example-session dit voorbeeld. Selecteer op de pagina Gebeurtenissen een of meer gebeurtenissen die u aan de sessie wilt toevoegen. In dit voorbeeld hebben we de sql_batch_starting gebeurtenis geselecteerd.

Screenshot of the New Session SSMS dialog showing the event selection page with the sql_batch_starting event selected.

Selecteer op de pagina Gegevensopslag de optie event_file als doeltype en plak de URL van de opslagcontainer in het vak Opslag-URL . Typ een slash (/) aan het einde van deze URL, gevolgd door de naam van het bestand (blob). In ons voorbeeld is example-session.xelde blobnaam en de volledige URL https://exampleaccount4xe.blob.core.windows.net/xe-example-container/example-session.xel.

Notitie

Gebruik voor SQL Managed Instance, in plaats van de URL van de opslagcontainer op de pagina Gegevensopslag , de knop Script te gebruiken om een T-SQL-script van de sessie te maken. Geef de container-URL op als de waarde voor het filename argument, vergelijkbaar met het onderstaande SQL Managed Instance-voorbeeld en voer het script uit om de sessie te maken.

Screenshot of the New Session SSMS dialog showing the data storage selection page with an event_file target selected and an entered storage URL.

Nu de sessie is geconfigureerd, kunt u de knop Script selecteren om een T-SQL-script van de sessie te maken, om deze later op te slaan. Dit is het script voor onze voorbeeldsessie:

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

Selecteer OK om de sessie te maken.

Vouw in Objectverkenner de map Sessies uit om de gebeurtenissessie te zien die u hebt gemaakt. De sessie wordt standaard niet gestart wanneer deze wordt gemaakt. Als u de sessie wilt starten, klikt u met de rechtermuisknop op de sessienaam en selecteert u Sessie starten. U kunt deze later stoppen door op dezelfde manier stopsessie te selecteren zodra de sessie wordt uitgevoerd.

Omdat T-SQL-batches worden uitgevoerd in deze database of het beheerde exemplaar, schrijft de sessie gebeurtenissen naar de example-session.xel blob in de xe-example-container opslagcontainer.

Als u de sessie wilt stoppen, klikt u er met de rechtermuisknop op in Objectverkenner en selecteert u Sessie stoppen.

Gebeurtenisgegevens weergeven

U kunt gebeurtenisgegevens bekijken in de gebruikersinterface van sql Server Management Studio (SSMS), waar u filters en aggregaties kunt gebruiken om de gegevens te analyseren die u hebt vastgelegd. Zie Gebeurtenisgegevens weergeven in SSMS voor meer informatie over het gebruik van de logboeken in SSMS.

Xel-bestanden downloaden uit Azure Storage

Tip

Als u SSMS v19.2 of hoger gebruikt, hoeft u geen bestanden te downloaden xel zoals beschreven in deze sectie. In deze versies leest SSMS de xel bestanden voor elke sessie rechtstreeks vanuit Azure Storage. Zie de blog Uitgebreide gebeurtenissen verbeteren in Azure SQL voor meer informatie.

Download de xel blob voor de sessie uit de opslagcontainer en sla deze op als een lokaal bestand. Zoek in Azure Portal het opslagaccount dat u hebt gebruikt, selecteer Containers onder Gegevensopslag en selecteer de container die u hebt gemaakt voor uw gebeurtenissessie. De blob voor de sessie heeft de sessienaam als het eerste deel van de naam, met een numeriek achtervoegsel. Selecteer het beletselteken (...) om het contextmenu voor de blob weer te geven en selecteer Downloaden.

U kunt Azure Storage Explorer installeren om meerdere xel blobs in één bewerking te downloaden.

Zodra het xel bestand is gedownload, opent u het in SSMS. Ga in het hoofdmenu van SSMS naar Bestand en selecteer Openen. Als u één xel bestand hebt, selecteert u Bestand... en bladert u naar het bestand dat u hebt gedownload. Als u meerdere xel bestanden hebt gegenereerd door dezelfde gebeurtenissessie (ook wel rollover-bestanden genoemd), kunt u het dialoogvenster Uitgebreide gebeurtenisbestanden samenvoegen gebruiken om ze allemaal in de logboeken te openen.

Gebeurtenisgegevens weergeven met T-SQL

Als u gebeurtenissessiegegevens wilt lezen met behulp van T-SQL, gebruikt u de functie sys.fn_xe_file_target_read_file(). Als u deze functie wilt gebruiken in een database of beheerd exemplaar dat verschilt van het exemplaar waarin de gebeurtenissessie wordt gemaakt, maakt u een referentie om de Database Engine toegang te geven tot de opslagcontainer met de gebeurtenis-blobs.

Zie Een gebeurtenissessie maken in SSMS voor een gedetailleerdere procedure.