Temos dezenas de servidores principais e espelhos correspondentes, a maioria está funcionando bem, no entanto, um deles está agindo de forma estranha. Especificamente, o sp_dbmmonitorresults
proc retorna todas as colunas como NULL para um determinado banco de dados de princípios, enquanto sp_dbmmonitorresults
no espelho retorna informações válidas:
Agora, tenho uma ideia aproximada de qual foi a causa; quando os servidores de princípio e de espelhamento foram configurados, as configurações regionais estavam incorretas no primário (a hora estava correta, mas estava usando uma região +4 (América etc.), a região de tempo foi corrigida para GMT +0 APÓS o espelhamento ter sido configurado (escola menino erro que eu sei, mas c'est la vie!)
Edição: 19/12/2012
Hoje eu removi o espelhamento, apaguei as cópias no espelho e reinstalei o espelhamento, porém isso não resolveu o problema! Vou dar uma recompensa nessa questão para tentar chegar ao fundo disso.
Para confirmar, se eu executar EXEC sp_dbmmonitorresults @database_name = 'ProScript'
manualmente em cada servidor, ele retornará NULL para a maioria dos valores no primário, mas retornará bem no espelho, como mostrado:
Quando executado no primário:
Zoom: clique para a versão em tamanho real
Quando correu no espelho:
Zoom: clique para a versão em tamanho real
Como você pode ver, os horários são atuais e o banco de dados é sincronizado, mas o log_generation_rate, unsent_log, send_rate etc vendem todos NULL no primário?
Ambos os servidores têm o trabalho principal sendo executado a cada minuto, exec sys.sp_dbmmonitorupdate
como uma etapa do trabalho etc.
Olhando para a fonte do sys.sp_dbmmonitorupdate, ele pega esses valores sys.dm_os_performance_counters
- por isso, se eu executar o seguinte no espelho:
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' )
Eu obtenho bons resultados:
No entanto, se eu executar o mesmo SQL no primário, não haverá linhas!
Isso sugere que a sys.dm_os_performance_counters
tabela não está sendo preenchida para o espelhamento? O que causaria isso ??
fonte
Você tentou remover o trabalho de monitoramento de espelhamento de banco de dados na instância principal e recriá-lo?
Isso não envolve reinicializar a sessão de espelhamento de banco de dados, apenas eliminar e recriar o trabalho usando os mesmos procedimentos armazenados usados pelo SSMS para gerenciar o monitor de espelhamento de banco de dados.
Aqui estão os links para as entradas dos Manuais Online:
E um pequeno exemplo de script:
fonte