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?
fuente
¿Ha intentado eliminar el trabajo de supervisión de duplicación de la base de datos en la instancia principal y volver a crearlo?
Esto no implica reiniciar la sesión de creación de reflejo de la base de datos, simplemente abandonar y volver a crear el trabajo utilizando los mismos procedimientos almacenados utilizados por SSMS para administrar el monitor de creación de reflejo de la base de datos.
Aquí están los enlaces a las entradas de Libros en línea:
Y un breve script de muestra:
fuente