El archivo de registro de la base de datos de distribución de SQL Server crece sin control después de la copia de seguridad completa de la base de datos

8

Tenemos un entorno de replicación de fusión que está empujando a 8 suscriptores. Esto está funcionando bien. Nuestra base de datos de distribución está configurada en modo de recuperación simple. Tenemos un plan de mantenimiento que respaldará todas las bases de datos todos los días a las 00:30. Una vez que se completa este proceso, el archivo de registro de distribución crece durante los próximos 30 minutos y absorbe todo el espacio restante en el disco duro (aproximadamente 90 GB)

Lo que sucede entonces es que la base de datos de distribución se muestra como "Pendiente de recuperación" y no podemos hacer nada hasta que reiniciemos la máquina. Después de esto, puedo reducir el archivo de registro a 2 MB.

No tengo idea de por qué está sucediendo esto. El archivo de registro se ejecuta a unos 10 MB durante el día. El tamaño de la base de datos es de 15 GB.

Koenyn
fuente
2
¿Qué más está haciendo el plan de mantenimiento? ¿Y cuál es el sys.databases.log_reuse_wait_descvalor durante esos 30 minutos mientras crece el registro?
Remus Rusanu
¿Qué está llevando a la base de datos a un estado pendiente de recuperación? Eso no debería estar sucediendo en una copia de seguridad completa.
mrdenny
1
ok, entonces parece que cuando este trabajo ejecuta "Limpieza del historial del agente: distribución", el archivo de registro crece ... La copia de seguridad posiblemente esté ocurriendo mientras este trabajo aún se está ejecutando. No estoy seguro de si eso causará el problema. He configurado la limpieza del historial para que se ejecute una hora antes. Veremos cuáles son los resultados
Koenyn
Cualquier índice de reconstrucción?
Carol Baker West

Respuestas:

2

Parece que tiene un gran volumen de transacciones con su replicación. Si es así, ese trabajo de "limpieza: distribución" probablemente debería ejecutarse con mucha más frecuencia. Me parece que está sucediendo una vez al día. En mi servidor de replicación de transacciones altas, lo ejecuto cada 15 minutos para mantener solo las últimas 36 horas. De esa manera, se estimula y no se atasca.

Aquí hay un artículo que podría ayudar: http://www.sqlservergeeks.com/blogs/singhsatnam84/sql-server-bi/563/sql-server-controlling-growth-of-a-distribution-database

Cate Donoghue
fuente
1
Sí, lo ejecutamos una vez al día. Ahora he limitado el tamaño del archivo de registro a 15 gb. Eso parece haber ayudado mucho. No hay necesidad de truncarlo ahora y nuestro servidor no se bloquea. ¿Cuáles son los riesgos de ejecutar el trabajo cada 15 minutos?
Koenyn
La limpieza es una simple llamada de proceso almacenada. Al ejecutarlo más a menudo, el tamaño del lote es más pequeño. Si su retención está configurada correctamente, no hay riesgo que haya encontrado. Mantiene el retraso de la replicación, en mi experiencia. dbo.sp_MSdistribution_cleanup
Cate Donoghue
0

Cree una nueva instantánea de la replicación e inicie nuevamente el agente de instantánea.

usuario199836
fuente
2
Bienvenido a los administradores de bases de datos . Por favor, marque ¿Cómo escribo una buena respuesta? para contribuir mejor con tu conocimiento.
Ronaldo