Créer une session avec une cible event_file dans Stockage Azure
S’applique à : Azure SQL Database Azure SQL Managed Instance
Les étapes générales de cette procédure pas à pas sont les suivantes :
- Créez un compte de Stockage Azure ou recherchez un compte existant à utiliser
- Créer un conteneur dans le compte de stockage
- Créer un jeton SAS avec l’accès requis pour ce conteneur
- Créer un identifiant pour stocker le jeton SAS dans la base de données ou l'instance gérée où vous créez la session d'événement
- Créer, démarrer et utiliser une session d’événements
Créer un compte de stockage et un conteneur
Pour plus d’informations sur la création d’un compte de Stockage Azure, consultez Créer un compte de stockage. Vous allez apprendre à créer un compte de stockage à l’aide de Portail Azure, PowerShell, Azure SQL, d’un modèle ARM ou d’un modèle Bicep.
Nous vous recommandons d’utiliser un compte utilisateur ayant les caractéristiques suivantes :
- Il devrait être un compte
Standard general-purpose v2
. - Le type de redondance correspond à la redondance de la base de données Azure SQL, du pool élastique ou de l'instance gérée où les sessions d'événements sont créées.
- Pour les ressources localement redondantes Azure SQL, utilisez LRS, GRS ou RA-GRS. Pour les ressources Azure SQL redondantes interzone, utilisez ZRS, GZRS ou RA-GZRS. Pour plus d’informations, consultez Redondance de Stockage Azure.
- Il devrait utiliser le
Hot
niveau d’accès d’objet blob. - Se trouve dans la même région Azure que la base de données Azure SQL, le pool élastique ou l'instance gérée.
Vous devrez ensuite créer un conteneur dans le compte de stockage à l’aide du portail Azure. Vous pouvez également créer un conteneur en utilisant PowerShell ou Azure CLI.
Notez les noms du compte de stockage et du conteneur que vous utilisez.
Créez un jeton SAS
La Moteur de base de données en cours d’exécution de la session d’événements a besoin d’un accès spécifique au conteneur de stockage. Vous accordez cet accès en créant un jeton SAS pour le conteneur. Cet outil doit répondre aux exigences suivantes :
- Disposer des autorisations
rwl
(Read
,Write
,List
) - Disposer de l’heure de début et de l’heure d’expiration qui englobent la durée de vie de la session d’événements
- Il ne doit pas avoir de restriction des adresses IP.
Sur le portail Azure, recherchez le compte de stockage et le conteneur que vous avez créé. Sélectionnez le conteneur, puis accédez à Paramètres > Jetons d’accès partagé. Réglez les autorisations sur Read
, Write
, List
et réglez la date et l’heure de début et d’expiration. Le jeton SAS que vous créez fonctionne uniquement dans cet intervalle de temps.
Sélectionnez le bouton Générer une URL et un jeton SAS. Le jeton SAS se trouve dans la zone de jeton SAS d’objet blob. Vous pouvez le copier pour l’utiliser à l’étape suivante.
Important
Le jeton SAS fournit un accès en lecture et en écriture à ce conteneur. Traitez-le comme vous traitez un mot de passe ou tout autre secret.
Créer un identifiant pour stocker le jeton SAS
Dans la base de données Azure SQL, vous utilisez un identifiant de base de données pour stocker le jeton SAS. Dans Azure SQL Managed Instance, vous utilisez un identifiant à l’échelle du serveur.
Stockez le jeton SAS dans un identifiant géré par la base de données. À l’aide d’un outil client tel que SSMS ou ADS, ouvrez une nouvelle fenêtre Requête, connectez-vous à la base de données où vous créez la session d’événements et collez le lot T-SQL suivant. Vérifiez que vous êtes connecté à votre base de données utilisateur et non à la base de données master
.
Remarque
L’exécution du lot T-SQL suivant nécessite l’autorisation de la base de données CONTROL
, qui est détenue par le propriétaire de base de données (dbo
), par les membres du db_owner
rôle de base de données et par l’administrateur du serveur logique.
/*
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';
Avant d’exécuter ce lot, apportez les modifications suivantes :
- Dans les trois occurrences de
https://exampleaccount4xe.blob.core.windows.net/xe-example-container
, remplacezexampleaccount4xe
par le nom de votre compte de stockage et remplacezxe-example-container
par le nom de votre conteneur. - Remplacez la chaîne entière entre les guillemets simples de la clause
SECRET
par le jeton SAS que vous avez copié à l’étape précédente.
Créer, démarrer et arrêter une session d’événements
Une fois les informations d’identification avec le jeton SAS créé, vous pouvez créer la session d’événements. La création d’une session d’événements ne nécessite pas l’autorisation CONTROL
. Si l’identifiant avec le jeton SAS correct existe déjà, vous pouvez créer des sessions d’événements même si vous disposez d’un ensemble plus restreint d’autorisations. Consultez les autorisations pour connaître les autorisations spécifiques nécessaires.
Pour créer une nouvelle session d’événements dans SSMS, développez le nœud Événements étendus. Ce nœud se trouve sous le dossier de base de données dans la base de données Azure SQL et sous le dossier Gestion dans Azure SQL Managed Instance. Cliquez avec le bouton droit sur le dossier Sessions, puis sélectionnez Nouvelle session.... Dans la page Général, entrez un nom pour la session, qui se trouve example-session
dans cet exemple. Dans la page Événements, sélectionnez un ou plusieurs événements à ajouter à la session. Dans cet exemple, l’événement sql_batch_starting
est sélectionné.
Dans la page Stockage de données, sélectionnez event_file
comme type de cible, puis collez l’URL du conteneur de stockage dans la zone URL de Stockage. Tapez une barre oblique (/
) à la fin de cette URL, suivie du nom du fichier (blob). Dans notre exemple, le nom de l’objet blob est example-session.xel
, et l’URL entière est https://exampleaccount4xe.blob.core.windows.net/xe-example-container/example-session.xel
.
Remarque
Pour SQL Managed Instance, au lieu de coller l’URL du conteneur de stockage sur la page Stockage des données, utilisez le bouton Script pour créer un script T-SQL de la session. Spécifiez l’URL du conteneur comme valeur de l’argument filename
, comme dans l’exemple SQL Managed Instance ci-dessous, puis exécutez le script pour créer la session.
Maintenant que la session est configurée, vous pouvez sélectionner le bouton Script pour créer un script T-SQL de la session, pour l’enregistrer ultérieurement. Voici le script de notre exemple de session :
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
Sélectionnez OK pour créer l’utilisateur.
Dans l’Explorateur d’objets, développez le dossier Sessions pour voir la session d’événements que vous avez créée. Par défaut, la session n’est pas démarrée lors de sa création. Pour démarrer la session, cliquez avec le bouton droit sur le nom de la session, puis sélectionnez Démarrer la session. Vous pouvez l’arrêter ultérieurement en sélectionnant de la même façon Arrêter la session, une fois la session en cours d’exécution.
À mesure que les lots T-SQL sont exécutés dans cette base de données ou l’instance gérée, la session écrit des événements dans l’objet blob example-session.xel
dans le conteneur de stockage xe-example-container
.
Pour arrêter la session, cliquez dessus avec le bouton droit dans l’Explorateur d’objets, puis sélectionnez Arrêter la session.
Afficher les données d’événement
Vous pouvez afficher les données d’événement dans l’interface utilisateur de l’observateur d’événements SQL Server Management Studio (SSMS), où vous pouvez utiliser des filtres et des agrégations pour analyser les données que vous avez capturées. Pour plus d’informations sur l’utilisation de l’observateur d’événements dans SSMS, consultez Afficher les données d’événement dans SSMS.
Télécharger des fichiers xel à partir du stockage Azure
Conseil
Si vous utilisez SSMS v19.2 ou version ultérieure, vous n’avez pas besoin de télécharger xel
fichiers comme décrit dans cette section. Dans ces versions, SSMS lit les fichiers xel
de chaque session directement à partir du stockage Azure. Pour plus d’informations, consultez le blog Amélioration des événements étendus dans le blog Azure SQL.
Téléchargez l’objet blob xel
pour la session à partir du conteneur de stockage et enregistrez-le en tant que fichier local. Dans Portail Azure, recherchez le compte de stockage que vous avez utilisé, sélectionnez Conteneurs sous Stockage de données, puis sélectionnez le conteneur que vous avez créé pour votre session d’événements. L’objet blob de la session a le nom de session comme première partie de son nom, avec un suffixe numérique. Sélectionnez les points de suspension (...) pour afficher le menu contextuel de l’objet blob, puis sélectionnez Télécharger.
Vous pouvez installer Explorateur Stockage Azure pour télécharger plusieurs objets blob xel
en une seule opération.
Une fois le fichier xel
téléchargé, ouvrez-le dans SSMS. Dans le menu principal de SSMS, accédez à Fichier et sélectionnez Ouvrir. Si vous avez un seul fichier xel
, sélectionnez Fichier... et accédez au fichier que vous avez téléchargé. Si vous avez plusieurs fichiers xel
générés par la même session d’événements (appelées fichiers de substitution), vous pouvez utiliser la boîte de dialogue Fusionner les fichiers d’événements étendus... pour les ouvrir dans l’observateur d’événements.
Afficher les données d’événement à l’aide de T-SQL
Pour lire les données de session d’événements à l’aide de T-SQL, utilisez la fonction sys.fn_xe_file_target_read_file(). Pour utiliser cette fonction dans une base de données ou une instance gérée différente de celle où la session d’événements est créée, créer un identifiant pour donner au Moteur de base de données l’accès au conteneur de stockage avec les objets blob d’événements.
Pour obtenir une procédure pas à pas plus détaillée, consultez Créer une session d’événements dans SSMS.