Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:Azure SQL Database
Azure SQL Managed Instance
De stappen op hoog niveau in deze handleiding zijn:
- Maak een Azure Storage-account of zoek een bestaand geschikt account dat u wilt gebruiken.
- Maak een container in dit opslagaccount.
- Verleen de vereiste toegang aan de database-engine tot de container met behulp van een RBAC-roltoewijzing of een SAS-token.
- Maak een referentie in de database of het met SQL 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.
Gebruik een account 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.
- De hiërarchische naamruimte is niet ingeschakeld.
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 hebt gemaakt. U gebruikt deze in de volgende stappen.
Toegang verlenen tot de container
Voor het lezen en schrijven van gebeurtenisgegevens is voor de database-engine specifieke toegang tot de container vereist. U kunt deze toegang op twee manieren verlenen, afhankelijk van uw keuze van het verificatietype:
Als u beheerde identiteit gebruikt met Microsoft Entra-authenticatie, wijst u de rol Storage Blob Data Bijdrager voor de container toe aan de beheerde identiteit van de logische Azure SQL-server of het beheerde exemplaar van Azure SQL.
Opmerking
Het gebruik van beheerde identiteit met uitgebreide gebeurtenissessies bevindt zich in de preview-fase.
Als u verificatie op basis van geheim gebruikt, maakt u een SAS-token voor de container.
Als u dit verificatietype wilt gebruiken, moet de optie Toegang tot opslagaccountsleutels toestaan zijn ingeschakeld. Zie Autorisatie van gedeelde sleutels voorkomen voor een Azure Storage-account voor meer informatie.
Toegang verlenen met beheerde identiteit
Ga in Azure Portal naar de pagina Identiteit van uw logische Azure SQL-server of azure SQL Managed Instance en zorg ervoor dat er een beheerde identiteit is toegewezen. Zie Beheerde identiteiten in Microsoft Entra voor Azure SQL voor meer informatie.
Navigeer in Azure Portal naar de opslagcontainer waar u gebeurtenisgegevens wilt opslaan. Op de pagina Toegangsbeheer (IAM) selecteert u Toevoegen om de RBAC-rol Inzender voor opslagblobgegevens toe te wijzen aan de beheerde identiteit van de logische server of het beheerde SQL-exemplaar.
Als aan de logische server of het beheerde SQL-exemplaar de door het systeem toegewezen beheerde identiteit is ingeschakeld, wijst u de rol toe aan die identiteit. Als de door het systeem toegewezen identiteit is uitgeschakeld, maar er een of meer door de gebruiker toegewezen identiteiten zijn, wijst u de rol toe aan de door de gebruiker toegewezen identiteit die is aangewezen als de primaire identiteit.
Zie Een Azure-rol toewijzen voor toegang tot blobgegevensvoor meer informatie.
Maak een referentiesleutel om de Database Engine op te dragen authenticatie uit te voeren bij Azure Storage met behulp van een beheerde identiteit voor een specifieke container-URL.
Maak een credential binnen het databasebereik. Open met behulp van een clienthulpprogramma, zoals SSMS, 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.Opmerking
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 dedb_owner
databaserol en door de beheerder van de logische server./* (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://<storage-account-name>.blob.core.windows.net/<container-name>' ) DROP DATABASE SCOPED CREDENTIAL [https://<storage-account-name>.blob.core.windows.net/<container-name>]; /* 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';
Voordat u deze batch uitvoert, moet u de volgende wijziging aanbrengen:
- Vervang in alle drie gevallen
https://<storage-account-name>.blob.core.windows.net/<container-name>
door de naam van uw opslagaccount en<container-name>
door de naam van uw container.
- Vervang in alle drie gevallen
Toegang verlenen met behulp van een SAS-token
Navigeer in Azure Portal naar het opslagaccount en de container die u hebt gemaakt. Selecteer de container en navigeer naar Instellingen voor gedeelde toegangstokens>.
Het SAS-token moet voldoen aan de volgende vereisten:
-
Machtigingen ingesteld op
Read
,Write
,Delete
, .List
- De begin - en verlooptijd moeten de levensduur van de gebeurtenissessie omvatten. Het SAS-token dat u maakt, werkt alleen binnen dit tijdsinterval.
- Geen IP-adresbeperkingen.
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.
-
Machtigingen ingesteld op
Maak een referentie om het SAS-token op te slaan.
Sla het SAS-token op in een databasereferentie. Open met behulp van een clienthulpprogramma, zoals SSMS, 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.Opmerking
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 dedb_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://<storage-account-name>.blob.core.windows.net/<container-name>' ) DROP DATABASE SCOPED CREDENTIAL [https://<storage-account-name>.blob.core.windows.net/<container-name>]; /* The secret is the SAS token for the container. The Read, Write, and List permissions are set. */ CREATE DATABASE SCOPED CREDENTIAL [https://<storage-account-name>.blob.core.windows.net/<container-name>] WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = '<sas-token>';
Voordat u deze batch uitvoert, moet u de volgende wijzigingen aanbrengen:
- Vervang in alle drie gevallen
https://<storage-account-name>.blob.core.windows.net/<container-name>
door de naam van uw opslagaccount en<storage-account-name>
door de naam van uw container. - Vervang in de
SECRET
clausule<sas-token>
door het SAS-token dat u in de vorige stap hebt gekopieerd.
- Vervang in alle drie gevallen
Een gebeurtenissessie maken, starten en stoppen
Zodra de referentiegegevens zijn gemaakt, kunt u de evenementensessie maken. In tegenstelling tot het aanmaken van de referentie, is voor het aanmaken van een gebeurtenissessie niet de CONTROL
machtiging vereist. Zodra de referentiegegevens zijn aangemaakt, kunt u gebeurtenissessies maken, zelfs als u beperktere 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 voorwaartse slash (/
) aan het einde van de URL, gevolgd door de bestandsnaam (blob). In ons voorbeeld is example-session.xel
de blobnaam en de volledige URL https://<storage-account-name>.blob.core.windows.net/<container-name>/example-session.xel
.
Opmerking
Gebruik voor een SQL Managed Instance in plaats van de URL van de opslagcontainer te plakken op de Gegevensopslag-pagina, de Script-knop 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://<storage-account-name>.blob.core.windows.net/<container-name>/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.
Als T-SQL-batches worden uitgevoerd in deze database of sql managed instance, schrijft de sessie gebeurtenissen naar de example-session.xel
blob in de opslagcontainer.
Als u de sessie wilt stoppen, klikt u er met de rechtermuisknop op in Objectverkenner en selecteert u Sessie stoppen.
Problemen met gebeurtenissessies oplossen met een 'event_file' target in Azure Storage
De volgende lijst bevat fouten die kunnen optreden bij het starten van een uitgebreide gebeurtenissessie die gebruikmaakt van Azure Storage, met de mogelijke verklaringen voor de fout.
-
Het besturingssysteem heeft fout 5 geretourneerd: 'Toegang is geweigerd.'
- Als u beheerde identiteitverificatie gebruikt:
- De beheerde identiteit van een logische server of SQL Managed Instance heeft niet de vereiste RBAC-roltoewijzing. Zie Toegang verlenen met behulp van een beheerde identiteit voor meer informatie.
- De firewall van het opslagaccount is ingeschakeld en er is een uitzondering opgetreden om vertrouwde Azure-services toegang te geven tot het opslagaccount, maar er
Microsoft.Sql/servers
is geen resource-exemplaar voor de logische server toegevoegd aan de lijst met resource-exemplaren die toegang krijgen. Voor meer informatie, zie Toegang verlenen vanuit Azure-resource-exemplaren.
- Als u SAS-tokenverificatie gebruikt:
- De firewall van het opslagaccount is ingeschakeld. Dit wordt niet ondersteund voor gebeurtenissessies die gebruikmaken van SAS-tokenverificatie.
- Het SAS-token beschikt niet over voldoende machtigingen of is verlopen. Zie Toegang verlenen met behulp van een SAS-token voor meer informatie.
- Als u beheerde identiteitverificatie gebruikt:
-
Het besturingssysteem heeft fout 86 geretourneerd: 'Het opgegeven netwerkwachtwoord is niet juist.'
- Er is geen database-bereik referentie (voor Azure SQL Database) of serverbereik referentie (voor Azure SQL Managed Instance) met een naam die overeenkomt met de blobcontainer-URL. Zie de voorbeelden in Toegang verlenen tot de container voor meer informatie.
- De referentienaam eindigt met een slash (
/
). De referentienaam moet eindigen met de containernaam, zonder de afsluitende slash.
-
Het besturingssysteem heeft fout 3 geretourneerd: 'Het systeem kan het opgegeven pad niet vinden.'
- De container die is opgegeven in de URL van de blobcontainer bestaat niet.
-
Het besturingssysteem heeft fout 13 geretourneerd: 'De gegevens zijn ongeldig.'
- Er is een onveranderbaarheidsbeleid voor de blobcontainer. Onveranderbare opslag wordt niet ondersteund voor gebeurtenissessies.
- Voor het opslagaccount is de hiërarchische naamruimte ingeschakeld. Opslagaccounts waarvoor hiërarchische naamruimte is ingeschakeld, worden niet ondersteund voor gebeurtenissessies.
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
Aanbeveling
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, verleent u toegang tot de database-engine in de opslagcontainer met de gebeurtenisgegevens-blobs.
Zie Een gebeurtenissessie maken in SSMS voor een gedetailleerdere procedure.