Utilisation d'événements étendus avec Amazon RDS for Microsoft SQL Server
Vous pouvez utiliser des événements étendus dans Microsoft SQL Server pour capturer des informations de débogage et de dépannage pour Amazon RDS for SQL Server. Les événements étendus remplacent SQL Trace et Server Profiler, qui ont été rendus obsolètes par Microsoft. Les événements étendus sont similaires aux traces du profileur, mais avec un contrôle plus granulaire sur les événements suivis. Les événements étendus sont pris en charge pour SQL Server versions 2014 et ultérieures sur Amazon RDS. Pour plus d'informations, consultez Présentation des événements étendus
Les événements étendus sont activés automatiquement pour les utilisateurs disposant de privilèges d'utilisateur principal dans Amazon RDS for SQL Server.
Rubriques
Limitations et recommandations
Lorsque vous utilisez des événements étendus sur RDS for SQL Server, les limitations suivantes s'appliquent :
-
Les événements étendus ne sont pris en charge que pour les éditions Enterprise et Standard.
-
Vous ne pouvez pas modifier les sessions d'événements étendus par défaut.
-
Assurez-vous de définir le mode de partition de mémoire de session sur
NONE
. -
Le mode de rétention d'événement de session peut être
ALLOW_SINGLE_EVENT_LOSS
ouALLOW_MULTIPLE_EVENT_LOSS
. -
Les cibles ETW (Event Tracing for Windows) ne sont pas prises en charge.
-
Assurez-vous que les cibles de fichiers se trouvent dans le répertoire
D:\rdsdbdata\log
. -
Pour les cibles correspondant aux paire, définissez la propriété
respond_to_memory_pressure
sur1
. -
La mémoire cible de la mémoire tampon Ring ne peut pas être supérieure à 4 Mo.
-
Les actions suivantes ne sont pas prises en charge :
-
debug_break
-
create_dump_all_threads
-
create_dump_single_threads
-
-
L'événement
rpc_completed
est pris en charge sur les versions suivantes et ultérieures : 15.0.4083.2, 14.0.3370.1, 13.0.5865.1, 12.0.6433.1, 11.0.7507.2.
Configuration d'événements étendus sur RDS for SQL Server
Sur RDS for SQL Server, vous pouvez configurer les valeurs de certains paramètres des sessions d'événements étendus. Le tableau suivant décrit les paramètres configurables.
Nom du paramètre | Description | Valeur par défaut RDS | Valeur minimale | Valeur maximale |
---|---|---|---|---|
xe_session_max_memory |
Spécifie la quantité maximale de mémoire à allouer à la session pour la mise en mémoire tampon des événements. Cette valeur correspond au paramètre max_memory de la session d'événement. |
4 Mo | 4 Mo | 8 Mo |
xe_session_max_event_size |
Spécifie la taille de mémoire maximale autorisée pour les événements volumineux. Cette valeur correspond au paramètre max_event_size de la session d'événement. |
4 Mo | 4 Mo | 8 Mo |
xe_session_max_dispatch_latency |
Spécifie la durée pendant laquelle les événements sont mis en mémoire tampon avant d'être distribués aux cibles de session d'événements étendus. Cette valeur correspond au paramètre max_dispatch_latency de la session d'événement. |
30 secondes | 1 seconde | 30 secondes |
xe_file_target_size |
Spécifie la taille maximale de la cible du fichier. Cette valeur correspond au paramètre max_file_size de la cible du fichier. |
100 Mo | 10 Mo | 1 Go |
xe_file_retention |
Spécifie la durée de conservation en jours pour les fichiers générés par les cibles de fichiers des sessions d'événements. | 7 jours | 0 jour | 7 jours |
La définition de xe_file_retention
sur zéro entraîne la suppression automatique des fichiers .xel après la libération du verrouillage sur ces fichiers par SQL Server. Le verrouillage est libéré chaque fois qu'un fichier .xel atteint la limite de taille définie dans xe_file_target_size
.
Vous pouvez utiliser la procédure rdsadmin.dbo.rds_show_configuration
stockée pour afficher les valeurs actuelles de ces paramètres. Par exemple, utilisez l'instruction SQL suivante pour afficher le réglage actuel de xe_session_max_memory
.
exec rdsadmin..rds_show_configuration 'xe_session_max_memory'
Vous pouvez utiliser la procédure stockée rdsadmin.dbo.rds_set_configuration
pour les modifier. Par exemple, utilisez l'instruction SQL suivante pour définir xe_session_max_memory
sur 4 Mo.
exec rdsadmin..rds_set_configuration 'xe_session_max_memory', 4
Considérations sur les déploiements multi-AZ
Lorsque vous créez une session d'événements étendus sur une instance de base de données principale, elle ne se propage pas au réplica de secours. Vous pouvez basculer et créer la session d'événements étendus sur la nouvelle instance de base de données principale. Vous pouvez également supprimer et lire la configuration multi-AZ pour propager la session d'événements étendus au réplica de secours. RDS arrête toutes les sessions d'événements étendus personnalisées sur le réplica de secours, de sorte que ces sessions ne consomment pas de ressources sur le réplica de secours. Pour cette raison, après qu'un réplica de secours devient l'instance de base de données principale, veillez à démarrer manuellement les sessions d'événements étendus sur la nouvelle instance principale.
Cette approche s'applique aux groupes de disponibilité Always On et à la mise en miroir de bases de données.
Vous pouvez également utiliser un travail SQL Server Agent pour suivre le réplica de secours et démarrer les sessions si le réplica de secours devient le réplica principal. Par exemple, utilisez la requête suivante dans votre étape du travail SQL Server Agent pour redémarrer les sessions d'événements sur une instance de base de données principale.
BEGIN IF (DATABASEPROPERTYEX('rdsadmin','Updateability')='READ_WRITE' AND DATABASEPROPERTYEX('rdsadmin','status')='ONLINE' AND (DATABASEPROPERTYEX('rdsadmin','Collation') IS NOT NULL OR DATABASEPROPERTYEX('rdsadmin','IsAutoClose')=1) ) BEGIN IF NOT EXISTS (SELECT 1 FROM sys.dm_xe_sessions WHERE name='xe1') ALTER EVENT SESSION xe1 ON SERVER STATE=START IF NOT EXISTS (SELECT 1 FROM sys.dm_xe_sessions WHERE name='xe2') ALTER EVENT SESSION xe2 ON SERVER STATE=START END END
Cette requête redémarre les sessions d'événements xe1
et xe2
sur une instance de base de données principale si ces sessions sont à l'état arrêté. Vous pouvez également ajouter une planification avec un intervalle pratique à cette requête.
Interrogation de fichiers d'événements étendus
Vous pouvez utiliser SQL Server Management Studio ou la fonction sys.fn_xe_file_target_read_file
pour afficher les données des événements étendus qui utilisent des cibles de fichiers. Pour plus d'informations sur cette fonction, consultez sys.fn_xe_file_target_read_file (Transact-SQL)
Les cibles de fichiers d'événements étendus peuvent uniquement écrire des fichiers dans le répertoire D:\rdsdbdata\log
sur RDS SQL Server.
À titre d'exemple, utilisez la requête SQL suivante pour répertorier le contenu de tous les fichiers des sessions d'événements étendus dont les noms commencent par xe
.
SELECT * FROM sys.fn_xe_file_target_read_file('d:\rdsdbdata\log\xe*', null,null,null);