
Fonctionnement de la surveillance
Cette section présente la table d'état d'une mise en miroir de base de données, le travail de surveillance de la mise en miroir de bases de données et le moniteur. Elle indique également comment les utilisateurs peuvent surveiller l'état de la mise en miroir de bases de données et comment le travail de surveillance peut être arrêté.
Table d'état d'une mise en miroir de base de données
L'état de la mise en miroir d'une base de données est stocké dans une table d'état de mise en miroir de base de données interne, non documentée dans la base de données msdb. Cette table d'état est automatiquement créée la première fois que l'état de la mise en miroir est mis à jour sur l'instance du serveur.
La table d'état peut être mise à jour automatiquement ou manuellement par un administrateur système, lequel doit respecter un intervalle de 15 secondes au minimum entre les mises à jour. Cette valeur minimale de 15 secondes permet d'éviter que les instances du serveur ne soient surchargées de demandes d'état.
La table d'état est mise à jour automatiquement à la fois par le moniteur de mise en miroir de base de données et par le travail de surveillance de la mise en miroir de bases de données, si ce dernier est en cours d'exécution. Par défaut, le Travail de surveillance de la mise en miroir de bases de données met à jour la table une fois par minute (un administrateur système peut spécifier une fréquence de mise à jour comprise entre 1 et 120 minutes). Quant au moniteur de mise en miroir de bases de données, il met à jour la table automatiquement toutes les 30 secondes. Pour ces mises à jour, le Travail de surveillance de la mise en miroir de bases de données et le moniteur de mise en miroir de bases de données appellent sp_dbmmonitorupdate.
Lorsque la procédure sp_dbmmonitorupdate est exécutée pour la première fois, elle crée le table d'état de mise en miroir de bases de données et le rôle de base de données fixe dbm_monitor dans la base de données msdb. En général, la procédure sp_dbmmonitorupdate met à jour l'état de la mise en miroir en insérant une nouvelle ligne dans la table d'état pour chaque base de données mise en miroir sur l'instance du serveur ; pour plus d'informations, consultez la section « Table d'état d'une mise en miroir de base de données » de la présente rubrique. Cette procédure évalue également les mesures de performances dans les nouvelles lignes, et elle tronque les lignes antérieures à la période de rétention actuelle (la valeur par défaut est de 7 jours). Pour plus d'informations, consultez sp_dbmmonitorupdate (Transact-SQL).
Remarque : |
|---|
|
La mise à jour de la table d'état est automatique uniquement si le Travail de surveillance de la mise en miroir de bases de données existe et si l'Agent SQL Server est en cours d'exécution : ceci ne s'applique pas si le moniteur de mise en miroir de bases de données est actuellement utilisé par un membre du rôle de serveur fixe sysadmin. |
Travail de surveillance de la mise en miroir de bases de données
Le travail de surveillance de la mise en miroir de bases de données, Travail du moniteur de mise en miroir de bases de données, fonctionne indépendamment du moniteur de mise en miroir de bases de données. Le Travail de surveillance de la mise en miroir de bases de données est automatiquement créé uniquement si SQL Server Management Studio est utilisé pour démarrer une session de mise en miroir. Si les commandes ALTER DATABASE database_name SET PARTNER sont systématiquement utilisées pour démarrer la mise en miroir, le travail existe uniquement si l'administrateur système exécute la procédure stockée sp_dbmmonitoraddmonitoring.
Une fois que le Travail de surveillance de la mise en miroir de bases de données a été créé, en partant du principe que l'Agent SQL Server est en cours d'exécution, le travail est appelé une fois par minute par défaut. Le travail appelle ensuite la procédure système stockée sp_dbmmonitorupdate.
Par défaut, l'Agent SQL Server appelle le Travail de surveillance de la mise en miroir de bases de données une fois par minute, et le travail appelle sp_dbmmonitorupdate pour mettre à jour la table d'état. Les administrateurs système peuvent modifier la période de mise à jour à l'aide de la procédure stockée système sp_dbmmonitorchangemonitoring et peuvent afficher la période de mise à jour actuelle à l'aide de la procédure stockée système sp_dbmmonitorchangemonitoring. Pour plus d'informations, consultez sp_dbmmonitoraddmonitoring (Transact-SQL) et sp_dbmmonitorchangemonitoring (Transact-SQL).
État de la mise en miroir de base de données (par les administrateurs système)
Les membres du rôle serveur fixe sysadmin peuvent afficher et mettre à jour la table d'état.
-
Utilisation du moniteur de mise en miroir de bases de données
Lorsqu'un administrateur système utilise le moniteur de mise en miroir de bases de données, il peut actualiser manuellement la page État, l'arborescence de navigation ou la page Historique. La table d'état est également mise à jour, sauf si elle a déjà été mise à jour lors des 15 secondes précédentes.
Pour afficher l'historique de l'état d'une mise en miroir sur une instance de serveur donnée, l'administrateur système peut également cliquer sur le bouton Historique correspondant à une instance de serveur (dans la page État). L'historique est affiché dans la boîte de dialogue Historique de la mise en miroir de bases de données. Cette boîte de dialogue permet à l'administrateur système de consulter la totalité des lignes figurant dans la table d'état de l'instance du serveur, ou certaines d'entre elles.
Pour plus d'informations sur les mesures présentées dans la page État, consultez la section « Mesures de performances affichées par le moniteur de mise en miroir de bases de données » plus loin dans cette rubrique.
-
Utilisation de sp_dbmmonitorresults
Les administrateurs système peuvent utiliser la procédure stockée système sp_dbmmonitorresults pour afficher (et éventuellement mettre à jour) la table d'état si cette dernière n'a pas été mise à jour au cours des 15 secondes précédentes. Cette procédure appelle la procédure sp_dbmmonitorupdate et retourne une ou plusieurs lignes d'historique, en fonction de la quantité demandée dans l'appel de procédure. Pour obtenir des informations sur l'état dans son jeu de résultats, consultez sp_dbmmonitorresults (Transact-SQL).
État de la mise en miroir de base de données (par les membres dbm_monitor)
Comme nous l'avons mentionné, lors de la première exécution de la procédure sp_dbmmonitorupdate, le rôle de base de données fixe dbm_monitor est créé dans la base de données msdb. Les membres du rôle de base de données fixe dbm_monitor peuvent consulter l'état de la mise en miroir existant à l'aide du moniteur de mise en miroir de bases de données ou de la procédure stockée sp_dbmmonitorresults. Cependant, ces utilisateurs ne peuvent pas mettre à jour la table d'état. Pour connaître l'ancienneté de l'état affiché, un utilisateur peut observer les heures dans les étiquettes Journal principal (<heure>) et Journal miroir (<heure>) sur la page État.
Les membres du rôle de base de données fixe dbm_monitor sont tributaires du Travail de surveillance de la mise en miroir de bases de données pour la mise à jour de la table d'état à des fréquences régulières. Si le travail n'existe pas ou si l'Agent SQL Server est arrêté, l'état devient de plus en plus obsolète et ne correspondra plus forcément à la configuration de la session de mise en miroir. Par exemple, après un basculement, les partenaires peuvent sembler partager le même rôle (principal ou miroir), ou le serveur principal actuel peut être affiché comme serveur miroir, alors que le serveur miroir actuel est affiché comme serveur principal.
Suppression du travail de surveillance de la mise en miroir de bases de données
Le Travail de surveillance de la mise en miroir de bases de données est conservé tant qu'il n'a pas été supprimé. Le travail de surveillance doit être géré par l'administrateur système. Pour supprimer le Travail de surveillance de la mise en miroir de bases de données, utilisez sp_dbmmonitordropmonitoring. Pour plus d'informations, consultez sp_dbmmonitordropmonitoring (Transact-SQL).