Tenemos docenas de servidores principales y espejos correspondientes, la mayoría funciona bien, sin embargo, 1 de ellos está actuando de manera extraña. Específicamente, el sp_dbmmonitorresults
proceso devuelve todas las columnas como NULL para una base de datos de principio dada, mientras que sp_dbmmonitorresults
en el espejo devuelve información válida:
Ahora, tengo una idea aproximada de cuál fue la causa; cuando el principio y los servidores espejo estaban configurados, la configuración regional era incorrecta en la primaria (la hora era correcta pero estaba usando una región +4 (América, etc.), la región horaria se corrigió a GMT +0 DESPUÉS de la configuración espejo (escuela error de chico, lo sé, pero c'est la vie!)
Editar: 19/12/2012
Hoy eliminé la duplicación, eliminé las copias en la duplicación y volví a configurar la duplicación, sin embargo, ¡esto no resolvió el problema! Voy a hacer una recompensa por esta pregunta para tratar de llegar al fondo de esto.
Para confirmar, si ejecuto EXEC sp_dbmmonitorresults @database_name = 'ProScript'
manualmente en cada servidor, devuelve NULL para la mayoría de los valores en el primario, pero devuelve bien en el espejo, como se muestra:
Cuando se ejecutó en primaria:
Zoom: haga clic para ver la versión completa
Cuando corrió en el espejo:
Zoom: haga clic para ver la versión completa
Como puede ver, los tiempos son actuales y la base de datos está sincronizada, pero ¿log_generation_rate, unsent_log, send_rate, etc vare todo NULL en el primario?
Ambos servidores tienen el trabajo de montior ejecutándose cada minuto exec sys.sp_dbmmonitorupdate
como un paso de trabajo, etc.
Mirando la fuente de sys.sp_dbmmonitorupdate, toma estos valores sys.dm_os_performance_counters
, así que si ejecuto lo siguiente en el espejo:
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' )
Obtengo buenos resultados:
Sin embargo, si ejecuto el mismo SQL en el primario, ¡no hay filas!
¿Esto sugeriría que la sys.dm_os_performance_counters
tabla no se está rellenando para la duplicación? ¿Qué causaría eso?