Nous avons des dizaines de serveurs principaux et des miroirs correspondants, la plupart fonctionnent bien, cependant, l'un d'eux agit bizarrement. Plus précisément, le sp_dbmmonitorresults
proc renvoie toutes les colonnes comme NULL pour une base de données de principe donnée tandis que sp_dbmmonitorresults
sur le miroir renvoie des informations valides:
Maintenant, j'ai une idée approximative de la cause; lorsque le serveur principal et le serveur miroir étaient configurés, les paramètres régionaux étaient incorrects sur le serveur principal (l'heure était correcte mais utilisait une région +4 (Amérique, etc.), la région temporelle était corrigée à GMT +0 APRÈS la configuration de la mise en miroir (école erreur garçon je sais, mais c'est la vie!)
Modifier: 19/12/2012
Aujourd'hui, j'ai supprimé la mise en miroir, supprimé les copies sur le miroir et reconfiguré la mise en miroir, mais cela n'a pas résolu le problème! Je vais faire une prime sur cette question pour essayer d'aller au fond des choses.
Pour confirmer, si je lance EXEC sp_dbmmonitorresults @database_name = 'ProScript'
manuellement sur chaque serveur, il renvoie NULL pour la plupart des valeurs sur le primaire mais retourne bien sur le miroir, comme indiqué:
Lorsque Ran sur primaire:
Zoom: Cliquez pour la version pleine grandeur
Lorsque Ran sur le miroir:
Zoom: Cliquez pour la version pleine grandeur
Comme vous pouvez le voir, les heures sont actuelles et la base de données est synchronisée mais le log_generation_rate, unsent_log, send_rate etc vare all NULL sur le primaire?
Les deux serveurs ont le travail montior exécuté chaque minute avec exec sys.sp_dbmmonitorupdate
comme étape de travail, etc.
En regardant la source de sys.sp_dbmmonitorupdate, il saisit ces valeurs de sys.dm_os_performance_counters
- donc si je lance ce qui suit sur le miroir:
SELECT counter_name ,
cntr_value
FROM sys.dm_os_performance_counters
WHERE instance_name = 'ProScript'
AND counter_name IN ( N'Log Send Queue KB', N'Log Bytes Sent/sec', N'Redo Queue KB', N'Redo Bytes/sec', N'Transaction Delay', N'Log Bytes Flushed/sec', N'Transactions/sec' )
J'obtiens de bons résultats:
Cependant, si je lance le même SQL sur le primaire, il n'y a pas de lignes!
Cela suggérerait que la sys.dm_os_performance_counters
table n'est pas remplie pour la mise en miroir? Qu'est-ce qui causerait ça ???
la source
Avez-vous essayé de supprimer le travail de surveillance de la mise en miroir de bases de données sur l'instance principale et de le recréer?
Cela n'implique pas de réinitialiser la session de mise en miroir de bases de données, mais simplement de supprimer et de recréer le travail en utilisant les mêmes procédures stockées utilisées par SSMS pour gérer le moniteur de mise en miroir de bases de données.
Voici les liens vers les entrées de Books Online:
Et un court exemple de script:
la source