Utilisation d'événements étendus avec Amazon RDS for Microsoft SQL Server - Amazon Relational Database Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

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 dans la documentation Microsoft.

Les événements étendus sont activés automatiquement pour les utilisateurs disposant de privilèges d'utilisateur principal dans Amazon RDS for SQL Server.

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 ou ALLOW_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 sur 1.

  • 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
Note

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.

Note

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) dans la documentation Microsoft.

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);