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:
- Maak een Azure Storage-account of zoek een bestaand geschikt account om te gebruiken
- Een container maken in dit opslagaccount
- Een SAS-token maken met de vereiste toegang voor deze container
- Een referentie maken voor het opslaan van het SAS-token in de database of het beheerde exemplaar waar u de gebeurtenissessie maakt
- 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.
- Gebruik LRS, GRS of RA-GRS voor lokaal redundante Azure SQL-resources. Gebruik ZRS, GZRS of RA-GZRS voor zoneredundante Azure SQL-resources. Zie Redundantie in Azure Storage voor meer informatie.
- Maakt gebruik van de
Hot
blob-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
, Write
en List
stel 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.
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-container
exampleaccount4xe
de naam van uw opslagaccount en vervang deze doorxe-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.
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.xel
de 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.
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.