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
SQL-database in Fabric
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 identificatie in de database of database-instantie 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 v2account. - 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
Hotblob-toegangslaag. - Bevindt zich in dezelfde Azure-regio als de Azure SQL-database, elastische pool, Fabric capaciteit of SQL Managed Instance.
- 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.
Verleen eerst toegang 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.
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 in Azure SQL Database en SQL Database in Microsoft Fabric een referentie 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
masterdatabase.Note
Voor het uitvoeren van de volgende T-SQL-batch is de
CONTROLdatabasemachtiging vereist. De machtiging wordt standaard bewaard door de eigenaar van de database (dbo), door de leden van dedb_ownerdatabaserol en door de beheerder van de logische server./* (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';
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<storage-account-name>door de naam van uw container.
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.
Important
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
masterdatabase.Note
Voor het uitvoeren van de volgende T-SQL-batch is de
CONTROLdatabasemachtiging vereist. De machtiging wordt standaard bewaard door de eigenaar van de database (dbo), door de leden van dedb_ownerdatabaserol 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 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>';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
SECRETclausule<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.
Maak in SQL Server Management Studio (SSMS) verbinding met de logische Server van Azure SQL Database.
Vouw het knooppunt Uitgebreide gebeurtenissen uit onder de map Beheer .
Klik met de rechtermuisknop op de map Sessies en selecteer Nieuwe sessie....
Voer op de pagina Algemeen een naam in voor de sessie. Dit is
example-sessionvoor het volgende codevoorbeeld.Selecteer op de pagina Gebeurtenissen een of meer gebeurtenissen die u aan de sessie wilt toevoegen. In dit voorbeeld hebben we de
sql_batch_startinggebeurtenis geselecteerd.Selecteer op de pagina Gegevensopslag de optie
event_fileals het doeltype.- Selecteer het lokale bestandsdoel voor een lokaal gebeurtenisbestand.
- Plak de URL van de opslagcontainer in het vak Storage-URL voor een gebeurtenisbestand dat is opgeslagen in Azure Storage. Typ een voorwaartse slash (
/) aan het einde van de URL, gevolgd door de bestandsnaam (blob). Bijvoorbeeld:https://<storage-account-name>.blob.core.windows.net/<container-name>/example-session.xel.
Selecteer op de pagina Gegevensopslag de optie
event_fileals 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 isexample-session.xelde blobnaam en de volledige URLhttps://<storage-account-name>.blob.core.windows.net/<container-name>/example-session.xel.Note
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
filenameargument, 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.
Wanneer T-SQL-batches worden uitgevoerd, 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 die door de database-engine wordt gebruikt, beschikt niet over 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/serversis 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 een netwerkbeveiligingsperimeter gebruikt met de afgedwongen modus, bevinden de database en het opslagaccount zich niet in dezelfde perimeter.
- 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 een netwerkbeveiligingsperimeter gebruikt met de afgedwongen modus, zijn er geen toegangsregels voor onbeperkte uitgaande communicatie vanuit de database en onbeperkte binnenkomende communicatie naar het opslagaccount.
- Als u beheerde identiteitverificatie gebruikt:
-
Het besturingssysteem heeft fout 86 geretourneerd: 'Het opgegeven netwerkwachtwoord is niet juist.'
- Er is geen referentie binnen het databasebereik (voor Azure SQL Database) of een referentie met serverbereik (voor Azure SQL Managed Instance of SQL Server) die overeenkomt met de URL van de blobcontainer. Zie de voorbeelden voor het verlenen van toegang met behulp van een beheerde identiteit of het verlenen van toegang met behulp van een SAS-token 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 SQL Server Management Studio voor meer informatie over het gebruik van de gebeurtenisviewer in SSMS.
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 exemplaar dat verschilt van die waarin de gebeurtenissessie wordt gemaakt, moet u toegang verlenen aan de container aan de database-engine in de opslagcontainer met de gebeurtenisgegevens-blobs. Zie Toegang verlenen met beheerde identiteit of toegang verlenen met behulp van een SAS-token.
Zie Een gebeurtenissessie maken in SSMS voor een gedetailleerdere procedure.
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 de Azure Storage-container. 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.
Verwante inhoud
- Uitgebreide gebeurtenissen in Azure SQL
- Overzicht van uitgebreide gebeurtenissen
- event_file doelbestand
- GEBEURTENISSESSIE MAKEN (Transact-SQL)
- nl-NL: CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL)
- CREATE CREDENTIAL (Transact-SQL)