Utilisation d'événements étendus avec Amazon RDS pour 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 pour Microsoft SQL Server

Vous pouvez utiliser des événements étendus dans Microsoft SQL Server pour recueillir 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é déconseillés 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 les versions de SQL serveur 2016 et ultérieures sur AmazonRDS. Pour plus d'informations, consultez Présentation des événements étendus dans la documentation Microsoft.

Les événements étendus sont automatiquement activés 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 limites 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.

  • Le suivi des événements pour les cibles Windows (ETW) n'est pas pris 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 des événements étendus sur RDS le SQL serveur

Sur RDS for SQL Server, vous pouvez configurer les valeurs de certains paramètres des sessions d'événements étendues. Le tableau suivant décrit les paramètres configurables.

Nom du paramètre Description RDSvaleur par défaut 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 valeur zéro xe_file_retention entraîne la suppression automatique des fichiers .xel une fois le verrouillage de ces fichiers déverrouillé par le SQL serveur. 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'SQLinstruction suivante pour afficher le paramètre actuel dexe_session_max_memory.

exec rdsadmin.dbo.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'SQLinstruction suivante pour définir une xe_session_max_memory valeur de 4 Mo.

exec rdsadmin.dbo.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. RDSarrête toutes les sessions d'événements prolongées autres que celles par défaut sur la réplique de secours, afin que ces sessions ne consomment pas de ressources sur la réplique 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 une tâche d'agent SQL serveur pour suivre la réplique de secours et démarrer les sessions si la réplique de secours devient la réplique principale. Par exemple, utilisez la requête suivante dans votre étape de travail de l'agent SQL serveur 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 sys.fn_xe_file_target_read_file fonction pour afficher les données d'événements étendus utilisant des fichiers cibles. Pour plus d'informations sur cette fonction, consultez sys.fn_xe_file_target_read_file (Transact -) dans la documentation Microsoft. SQL

Les cibles de fichiers d'événements étendus peuvent uniquement écrire des fichiers D:\rdsdbdata\log dans le RDS répertoire SQL du serveur.

Par exemple, utilisez la SQL requête suivante pour répertorier le contenu de tous les fichiers des sessions d'événements étendues dont le nom commence parxe.

SELECT * FROM sys.fn_xe_file_target_read_file('d:\rdsdbdata\log\xe*', null,null,null);