У нас есть десятки основных серверов и соответствующих зеркал, большинство из них работают нормально, однако один из них ведет себя странно. В частности, sp_dbmmonitorresults
proc возвращает все столбцы как NULL для данной основной базы данных, тогда как sp_dbmmonitorresults
в зеркале возвращается действительная информация:
Теперь у меня есть приблизительное представление о причине; когда основной и зеркальный серверы были настроены, региональные настройки были неправильными на первичном (время было правильным, но использовался регион +4 (Америка и т. д.), регион времени был скорректирован до GMT +0 ПОСЛЕ настройки зеркального отображения (школа ошибка мальчика, я знаю, но c'est la vie!)
Изменить: 19/12/2012
Сегодня я удалил зеркалирование, удалил копии на зеркале и заново настроил зеркалирование, однако это не решило проблему! Я собираюсь получить награду за этот вопрос, чтобы попытаться разобраться в этом.
Для подтверждения, если я запускаю EXEC sp_dbmmonitorresults @database_name = 'ProScript'
вручную на каждом сервере, он возвращает NULL для большинства значений на первичном сервере, но возвращает нормально в зеркале, как показано:
Когда побежал по предмету:
Масштаб: Нажмите для полной версии
Когда побежал на зеркало:
Масштаб: Нажмите для полной версии
Как вы можете видеть, времена текущие и база данных синхронизирована, но log_generation_rate, unsent_log, send_rate и т. Д. Все NULL на первичном?
На обоих серверах задание montior выполняется каждую минуту exec sys.sp_dbmmonitorupdate
как шаг задания и т. Д.
Глядя на источник sys.sp_dbmmonitorupdate, он получает эти значения из sys.dm_os_performance_counters
- так что, если я выполню следующее на зеркале:
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' )
Я получаю хорошие результаты:
Тем не менее, если я запускаю тот же SQL на основной, строк нет!
Это предполагает, что sys.dm_os_performance_counters
таблица не заполняется для зеркалирования? Что вызвало бы это ???