Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
S’applique à :Base de données SQL
Azure SQL Managed Instance
Base de données Azure SQL dans Fabric
Voici les étapes générales de cette procédure pas à pas :
- Créez un compte Stockage Azure ou recherchez un compte existant approprié à utiliser.
- Créer un conteneur dans ce compte de stockage.
- Accordez au moteur de base de données l’accès requis au conteneur à l’aide d’une affectation de rôle RBAC ou d’un jeton SAS.
- Créez des informations d’identification dans la base de données ou l’instance où vous créez la session d’événements.
- Créez, démarrez et utilisez une session d’événement.
Créer un compte de stockage et un conteneur
Pour en savoir plus sur la création d’un compte de stockage dans Stockage Azure, consultez Créer un compte de stockage. Vous allez découvrir comment créer un compte de stockage à l’aide du portail Azure, de PowerShell, d’Azure SQL, d’un modèle ARM ou d’un modèle Bicep.
Utilisez un compte qui :
- Est un compte
Standard general-purpose v2. - A son type de redondance correspondant à la redondance de la base de données Azure SQL, du pool élastique ou de l’instance managée où les sessions d’événement sont créées.
- Pour les ressources Azure SQL localement redondantes, utilisez LRS, GRS ou RA-GRS. Pour les ressources Azure SQL redondantes interzones, utilisez ZRS, GZRS ou RA-GZRS. Pour en savoir plus, consultez Redondance de Stockage Azure.
- Utilise le
Hotniveau d’accès aux objets blob. - Se trouve dans la même région Azure que la base de données Azure SQL, le pool élastique, la capacité Fabric ou l’instance managée SQL.
- L’espace de noms hiérarchique n’est pas activé.
Ensuite, créez un conteneur dans ce compte de stockage à l’aide du portail Azure. Vous pouvez également créer un conteneur à l’aide de PowerShell ou d’Azure CLI.
Notez les noms du compte de stockage et du conteneur que vous avez créés. Vous les utiliserez aux étapes suivantes.
Tout d’abord, accordez l’accès au conteneur. Pour lire et écrire des données d’événement, le moteur de base de données nécessite un accès spécifique au conteneur. Vous pouvez accorder cet accès de deux façons, en fonction de votre choix de type d’authentification :
Si vous utilisez l’identité managée avec l’authentification Microsoft Entra, affectez le rôle RBAC Contributeur aux données blob du stockage pour le conteneur à l’identité managée du serveur logique Azure SQL ou de l’instance managée d’Azure SQL.
Si vous utilisez l’authentification basée sur un secret, créez un jeton SAS pour le conteneur.
Pour utiliser ce type d’authentification, l’option Autoriser l’accès à la clé de compte de stockage doit être activée. Pour en savoir plus, consultez Empêcher l’autorisation avec clé partagée pour un compte de stockage Azure.
Octroyer l’accès à l’aide de l’identité managée
Dans le portail Azure, accédez à la page Identité de votre serveur logique Azure SQL ou de votre instance gérée d’Azure SQL, puis vérifiez qu’une identité managée est affectée. Pour en savoir plus, consultez Identités managées dans Microsoft Entra pour Azure SQL.
Dans le portail Azure, accédez au conteneur de stockage dans lequel vous souhaitez stocker les données d’événement. Sur la page Contrôle d’accès (IAM), cliquez sur Ajouter pour affecter le rôle RBAC Contributeur aux données blob de stockage à l’identité managée du serveur logique ou de l’instance managée d’SQL.
Si l’identité managée affectée par le système du serveur logique ou de l’instance managée d’SQL est activée, affectez le rôle à cette identité. Si l’identité affectée par le système est désactivée, mais qu’une ou plusieurs identités sont affectées par l’utilisateur, affectez le rôle à l’identité affectée par l’utilisateur désignée comme identité principale.
Pour en savoir plus, consultez Attribuer un rôle Azure pour l’accès aux données d’objet blob.
Créez des informations d’identification pour indiquer au moteur de base de données de s’authentifier auprès de Stockage Azure à l’aide de l’identité managée pour une URL de conteneur spécifique.
Dans Azure SQL Database et SQL Database dans Microsoft Fabric, créez des informations d’identification au niveau de la base de données. À l’aide d’un outil client tel que SSMS, ouvrez une nouvelle fenêtre de 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.Note
L’exécution du lot T-SQL suivant nécessite l’autorisation
CONTROLde base de données. Par défaut, l’autorisation est détenue par le propriétaire de la base de données (dbo), par les membres dudb_ownerrôle de base de données et par l’administrateur du serveur logique./* (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';
Avant d’exécuter ce lot, apportez la modification suivante :
- Dans les trois occurrences de
https://<storage-account-name>.blob.core.windows.net/<container-name>, remplacez<storage-account-name>par le nom de votre compte de stockage, puis<container-name>par le nom de votre conteneur.
Accorder l’accès à l’aide d’un jeton SAS
Dans le portail Azure, accédez au compte de stockage et au conteneur que vous avez créés. Sélectionnez le conteneur, puis accédez à Paramètres > Jetons d’accès partagé.
Le jeton SAS doit répondre aux exigences suivantes :
-
Autorisations définies sur
Read,Write,Delete,List. - L’heure de début et l’heure d’expiration doivent englober la durée de vie de la session d’événement. Le jeton SAS que vous créez fonctionne uniquement dans cet intervalle de temps.
- N’avoir aucune restriction des adresses IP.
Cliquez sur 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.
-
Autorisations définies sur
Créez des informations d’identification pour stocker le jeton SAS.
Stockez le jeton SAS dans des informations d’identification incluses dans l’étendue de la base de données. À l’aide d’un outil client tel que SSMS, ouvrez une nouvelle fenêtre de 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.Note
L’exécution du lot T-SQL suivant nécessite l’autorisation
CONTROLde base de données. Par défaut, l’autorisation est détenue par le propriétaire de la base de données (dbo), par les membres dudb_ownerrô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 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>';Avant d’exécuter ce lot, apportez les modifications suivantes :
- Dans les trois occurrences de
https://<storage-account-name>.blob.core.windows.net/<container-name>, remplacez<storage-account-name>par le nom de votre compte de stockage, puis<container-name>par le nom de votre conteneur. - Dans la clause
SECRET, remplacez<sas-token>par le jeton SAS que vous avez copié à l’étape précédente.
- Dans les trois occurrences de
Créer, démarrer et arrêter une session d’événement
Une fois les informations d’identification créées, vous pouvez créer la session d’événement. Contrairement à la création des informations d’identification, la création d’une session d’événement ne nécessite pas l’autorisation CONTROL. Une fois les informations d’identification créées, vous pouvez créer des sessions d’événement même si vous disposez d’autorisations plus restreintes. Consultez Autorisations pour connaître les autorisations spécifiques nécessaires.
Dans SQL Server Management Studio (SSMS), connectez-vous au serveur logique Azure SQL Database.
Développez le nœud Événements étendus sous le dossier Gestion .
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 correspond
example-sessionà l’exemple de code suivant.Sur la page Événements, sélectionnez un ou plusieurs événements à ajouter à la session. Dans cet exemple, nous avons sélectionné l’événement
sql_batch_starting.Dans la page Stockage des données , sélectionnez
event_filele type cible.- Pour un fichier d’événements local, sélectionnez la cible du fichier local.
- Pour un fichier blob d'événements stocké dans Azure Storage, 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 (de l’objet blob). Par exemple :https://<storage-account-name>.blob.core.windows.net/<container-name>/example-session.xel.
Sur la page Stockage de données, sélectionnez
event_filecomme 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 (de l’objet blob). Dans notre exemple, le nom de l’objet blob estexample-session.xelet l’URL entière esthttps://<storage-account-name>.blob.core.windows.net/<container-name>/example-session.xel.Note
Pour SQL Managed Instance, au lieu de coller l’URL du conteneur de stockage sur la page Stockage des données, cliquez sur 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 cliquer sur le bouton Script pour créer un script T-SQL de la session, afin de l’enregistrer pour une utilisation ultérieure. 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://<storage-account-name>.blob.core.windows.net/<container-name>/example-session.xel'); GO
Cliquez sur OK pour créer la session.
Dans l’Explorateur d’objets, développez le dossier Sessions pour afficher la session d’événement 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, la session écrit des événements dans l’objet example-session.xel blob dans le conteneur de stockage.
Pour arrêter la session, cliquez dessus avec le bouton droit dans l’Explorateur d’objets, puis sélectionnez Arrêter la session.
Résoudre les problèmes de sessions d'événements avec une cible event_file dans Azure Storage
La liste suivante contient des erreurs que vous pouvez rencontrer lors du démarrage d’une session d’événements étendue qui utilise stockage Azure, avec les explications possibles de l’erreur.
-
Le système d’exploitation a retourné l’erreur 5 : « L’accès est refusé ».
- Si vous utilisez l’authentification d’identité managée :
- L’identité managée utilisée par le moteur de base de données n’a pas l’attribution de rôle RBAC requise. Pour en savoir plus, consultez Accorder l’accès à l’aide de l’identité managée.
- Le pare-feu du compte de stockage est activé et une exception permettant d’autoriser les services Azure approuvés à accéder au compte de stockage est également activée, mais une
Microsoft.Sql/serversinstance de ressource pour le serveur logique n’a pas été ajoutée à la liste des instances de ressources auxquelles l’accès est accordé. Pour en savoir plus, consultez Accorder l’accès à partir d’instances de ressources Azure. - Si vous utilisez un périmètre de sécurité réseau en mode appliqué, la base de données et le compte de stockage ne se trouvent pas dans le même périmètre.
- Si vous utilisez l’authentification par jeton SAS :
- Le pare-feu du compte de stockage est activé. Cela n’est pas pris en charge pour les sessions d’événements qui utilisent l’authentification par jeton SAP.
- Le jeton SAP n’a pas d’autorisations suffisantes ou a expiré. Pour en savoir plus, consultez Accorder l’accès à l’aide d’un jeton SAS.
- Si vous utilisez un périmètre de sécurité réseau en mode appliqué, les règles d’accès pour autoriser les communications sortantes illimitées de la base de données et les communications entrantes illimitées vers le compte de stockage ne sont pas en place.
- Si vous utilisez l’authentification d’identité managée :
-
Le système d’exploitation a retourné l’erreur 86 : « Le mot de passe réseau spécifié n’est pas correct. »
- Il n’existe pas d’informations d’identification délimitées à la base de données (pour Azure SQL Database) ou d’informations d’identification au niveau du serveur (pour Azure SQL Managed Instance ou SQL Server) avec le nom correspondant à l’URL du conteneur d’objets blob. Pour plus d’informations, consultez les exemples permettant d’accorder l’accès à l’aide d’une identité managée ou d’accorder l’accès à l’aide d’un jeton SAP.
- Le nom des informations d’identification se termine par une barre oblique (
/). Le nom des informations d’identification doit se terminer par le nom du conteneur, sans inclure la barre oblique finale.
-
Le système d’exploitation a retourné l’erreur 3 : « Le système ne trouve pas le chemin spécifié. »
- Le conteneur spécifié dans l’URL du conteneur d’objets blob n’existe pas.
-
Le système d’exploitation a retourné l’erreur 13 : « Les données ne sont pas valides . »
- Il existe une stratégie d’immuabilité sur le conteneur blob. Le stockage immuable n’est pas pris en charge pour les sessions d’événement.
- Le compte de stockage a l’espace de noms hiérarchique activé. Les comptes de stockage avec espace de noms hiérarchique activé ne sont pas pris en charge pour les sessions d’événements.
Afficher les données d’événement
Vous pouvez afficher les données d’événement dans l’IU de la visionneuse d’événements SQL Server Management Studio (SSMS), où vous pouvez analyser les données que vous avez capturées à l’aide de filtres et d’agrégations. Pour plus d’informations sur l’utilisation de l’observateur d’événements dans SSMS, consultez Afficher les données d’événements dans SQL Server Management Studio.
Afficher les données d’événement à l’aide de T-SQL
La fonction sys.fn_xe_file_target_read_file() vous permet de lire les données de session d’événement à l’aide de T-SQL. Pour utiliser cette fonction dans une base de données ou une instance différente de celle où la session d'événements est créée, vous devez accorder l'accès au moteur de base de données dans le conteneur de stockage contenant les blobs de données d'événement. Consultez Accorder l’accès à l’aide d’une identité managée ou Accorder l’accès à l’aide d’un jeton SAS.
Pour obtenir une procédure pas à pas plus détaillée, consultez Créer une session d’événement dans SSMS.
Télécharger des fichiers xel depuis le stockage Azure
Tip
Si vous utilisez SSMS v19.2 ou version ultérieure, vous n’avez pas besoin de télécharger les fichiers xel comme décrit dans cette section. Dans ces versions, SSMS lit les xel fichiers de chaque session directement à partir du conteneur stockage Azure. Pour en savoir plus, consultez le blog Amélioration des événements étendus dans 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 le portail Azure, recherchez le compte de stockage que vous avez utilisé, cliquez sur Conteneurs sous Stockage de données, puis sélectionnez le conteneur que vous avez créé pour votre session d’événement. L’objet blob de la session a le nom de session comme première partie de son nom, avec un suffixe numérique. Cliquez sur 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 d’SSMS, accédez à Fichier et sélectionnez Ouvrir. Si vous disposez d’un seul fichier xel, sélectionnez Fichier… et accédez au fichier que vous avez téléchargé. Si vous disposez de plusieurs fichiers xel générés par la même session d’événement (appelés fichiers de substitution), vous pouvez les ouvrir dans la visionneuse d’événements à l’aide de la boîte de dialogue Fusionner les fichiers des événements étendus…