Wir haben Dutzende von Hauptservern und entsprechenden Spiegeln, die meisten funktionieren einwandfrei, aber einer von ihnen verhält sich seltsam. Insbesondere gibt der sp_dbmmonitorresults
Prozess alle Spalten für eine bestimmte Prinzipdatenbank als NULL zurück, während sp_dbmmonitorresults
auf dem Spiegel gültige Informationen zurückgegeben werden:
Jetzt habe ich eine ungefähre Vorstellung davon, was die Ursache war; Wenn die Prinzipal- und Spiegelserver eingerichtet wurden, waren die regionalen Einstellungen auf der Primärseite falsch (die Zeit war korrekt, es wurde jedoch eine + 4-Region verwendet (Amerika usw.)), und die Zeitregion wurde nach der Einrichtung der Spiegelung (Schule) auf GMT +0 korrigiert Junge Fehler, den ich kenne, aber c'est la vie!)
Bearbeiten: 19.12.2012
Heute habe ich die Spiegelung entfernt, die Kopien auf dem Spiegel gelöscht und die Spiegelung neu eingerichtet, dies hat das Problem jedoch nicht gelöst! Ich werde ein Kopfgeld auf diese Frage werfen, um zu versuchen, dem auf den Grund zu gehen.
Um zu bestätigen, wenn ich EXEC sp_dbmmonitorresults @database_name = 'ProScript'
manuell auf jedem Server ausgeführt werde, wird für die meisten Werte auf dem primären Server NULL zurückgegeben, auf dem Spiegel jedoch einwandfrei, wie gezeigt:
Wenn auf der Grundschule lief:
Zoom: Klicken Sie hier, um die Vollversion zu erhalten
Als ich auf den Spiegel lief:
Zoom: Klicken Sie hier, um die Vollversion zu erhalten
Wie Sie sehen können, sind die Zeiten aktuell und die Datenbank ist synchronisiert, aber die log_generation_rate, unsent_log, send_rate usw. sind alle NULL auf der primären?
Auf beiden Servern wird der Montior-Job jede Minute exec sys.sp_dbmmonitorupdate
als Jobschritt usw. ausgeführt.
Wenn man sich die Quelle von sys.sp_dbmmonitorupdate ansieht, werden diese Werte abgerufen sys.dm_os_performance_counters
- wenn ich also Folgendes auf dem Spiegel ausführe:
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' )
Ich bekomme gute Ergebnisse:
Wenn ich jedoch dasselbe SQL auf der Primärseite ausführe, gibt es keine Zeilen!
Dies würde darauf sys.dm_os_performance_counters
hinweisen, dass die Tabelle nicht für die Spiegelung gefüllt wird? Was würde das verursachen ???
quelle
Haben Sie versucht, den Überwachungsjob für die Datenbankspiegelung auf der Hauptinstanz zu entfernen und neu zu erstellen?
Dies beinhaltet nicht das erneute Initialisieren der Datenbankspiegelungssitzung, sondern nur das Löschen und Neuerstellen des Jobs unter Verwendung derselben gespeicherten Prozeduren, die von SSMS zum Verwalten des Datenbankspiegelungsmonitors verwendet werden.
Hier sind die Links zu den Books Online-Einträgen:
Und ein kurzes Beispielskript:
quelle