Зеркальный журнал пуст на первичном, но нормально на зеркале

8

У нас есть десятки основных серверов и соответствующих зеркал, большинство из них работают нормально, однако один из них ведет себя странно. В частности, sp_dbmmonitorresultsproc возвращает все столбцы как 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таблица не заполняется для зеркалирования? Что вызвало бы это ???

HeavenCore
источник

Ответы:

5

Ну, это заняло месяцы, но я наконец нашел проблему!

Файл sys.dm_os_performance_counters вообще не заполнялся на основном сервере.

Оказывается, что счетчики, где не установлены, я смог сделать это вручную следующим образом:

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

Перезапустил SQL и бум, теперь таблица заполняется - включая мою статистику зеркального отображения.

HeavenCore
источник
Должно быть, это было забавно отследить.
Зейн
0

Вы пытались удалить задание мониторинга зеркального отображения базы данных на основном экземпляре и воссоздать его?

Это не включает повторную инициализацию сеанса зеркального отображения базы данных, просто удаление и повторное создание задания с использованием тех же хранимых процедур, которые используются SSMS для управления монитором зеркального отображения базы данных.

Вот ссылки на записи Books Online:

И короткий пример сценария:

    -- 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
источник
Привет, Коз, это было первое, что я попробовал, боюсь, я только что попробовал сейчас, без изменений. Я просто укушу пулю, уберу зеркальное отображение и заново добавлю его.
HeavenCore