Journal du miroir vide sur le primaire mais bien sur le miroir

8

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_dbmmonitorresultsproc renvoie toutes les colonnes comme NULL pour une base de données de principe donnée tandis que sp_dbmmonitorresultssur le miroir renvoie des informations valides:

Historique sur le serveur Principle

Historique sur le serveur miroir

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:

entrez la description de l'image ici Zoom: Cliquez pour la version pleine grandeur

Lorsque Ran sur le miroir:

entrez la description de l'image ici 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_dbmmonitorupdatecomme é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:

entrez la description de l'image ici

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_counterstable n'est pas remplie pour la mise en miroir? Qu'est-ce qui causerait ça ???

HeavenCore
la source

Réponses:

5

Eh bien, ça a pris des mois mais j'ai finalement trouvé le problème!

Sys.dm_os_performance_counters n'était pas du tout rempli sur le serveur principal.

Il s'avère que les compteurs n'étaient pas installés, j'ai pu le faire manuellement comme suit:

C:\Windows\system32>lodctr "D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSS
QLSERVER\MSSQL\Binn\perf-MSSQLSERVERsqlctr.ini"

Redémarrage de SQL et boom, la table est maintenant remplie, y compris mes statistiques de mise en miroir.

HeavenCore
la source
Ça a dû être amusant à retrouver.
Zane
0

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:

    -- you'll need to be connected to the instance as a member
    -- of the sysadmin fixed server role, of course.

    -- delete the database mirroring monitoring job

    exec msdb.dbo.sp_dbmmonitordropmonitoring;
    go

    -- rebuild the database mirroring monitoring job
    -- the procedure accepts an optional parameter
    -- specifying the number of minutes between updates.
    -- the default is 1 minute.

    exec msdb.dbo.sp_dbmmonitoraddmonitoring;
    go
kozloski
la source
Salut Koz, ce fut l'une des premières choses que j'ai essayé, j'ai peur, je viens de le réessayer maintenant, pas de changement. Je vais juste mordre la balle et retirer la mise en miroir et l'ajouter à nouveau.
HeavenCore