Envío de registros - RESTAURAR CON ESPERA - en SQL Server 2012 sigue rompiendo

10

Estamos utilizando el envío de registros y RESTORE WITH STANDBYen SQL Server 2012 para restaurar la base de datos en modo de solo lectura con fines informativos. Sin embargo, la configuración de envío de registros continúa interrumpiéndose después de completar una restauración de una o dos copias de seguridad de registros. El envío de registros solo se rompe cuando se ejecuta como RESTORE WITH STANDBY; RESTORE WITH NORECOVERYNo causa ningún problema.

Mi única intuición sobre esto es que la base de datos primaria no es tan dinámica. Por lo tanto, cuando no hay transacciones, ¿esto puede causar problemas con el RESTOREproceso?

¿Alguna idea, soluciones conocidas?

Lo tuve trabajando durante unos días ejecutando un trabajo regular que hace una gran actualización en dos tablas. Cuando el trabajo dejó de ejecutarse, la configuración de envío de registros falló rápidamente, no se pudo procesar el archivo .trn. Restablecí el envío de registros e intenté ver si seguiría ejecutándose simplemente haciendo una pequeña actualización, cambiando el valor de una columna de un registro en una tabla, sin importar si todavía fallaba.

Gracias por todas tus respuestas.

PD: un extracto de nuestro registro

25/02/2013 13: 00: 00, LSRestore_DBDB01-A_BulldogDB, En curso, 1, DBREPORTS, LSRestore_DBDB01-A_BulldogDB, Paso de trabajo de restauración de registro de envío de registro., 2013-02-25 13: 00: 12.31 *** Error: No se pudo aplicar el archivo de copia de seguridad del registro '\\ dbsan01 \ DBBackups \ LSBackup_BulldogDB \ BulldogDB_20130225180000.trn' a la base de datos secundaria 'BulldogDB'. (Microsoft.SqlServer.Management.LogShipping) ***
2013-02-25 13: 00: 12.31 *** Error: Se produjo un error al procesar el registro de la base de datos 'BulldogDB'. Si es posible, restaurar desde la copia de seguridad. Si no hay una copia de seguridad disponible, puede ser necesario reconstruir el registro.
Se produjo un error durante la recuperación que impedía que la base de datos 'BulldogDB' (8: 0) se reiniciara. Diagnostique los errores de recuperación y corríjalos o restaure desde una copia de seguridad buena conocida. Si los errores no se corrigen o se esperan, comuníquese con el Soporte técnico.
RESTORE LOG está terminando anormalmente.
Se procesaron 0 páginas para el archivo 'BulldogDB' de la base de datos 'BulldogDB' en el archivo 1.
Se procesaron 1 páginas para el archivo 'BulldogDB' de la base de datos 'BulldogDB_log' en el archivo 1. (. Net SqlClient Data Provider) ***
2013-02-25 13: 00: 12.32 *** Error: No se pudo registrar el historial / mensaje de error. (Microsoft.SqlServer.Management.LogShipping) ***
2013-02-25 13: 00: 12.32 *** Error: ExecuteNonQuery requiere una conexión abierta y disponible. El estado actual de la conexión está cerrado. (System.Data) ***
2013-02-25 13: 00: 12.32 Omitiendo el archivo de copia de seguridad del registro '\\ dbsan01 \ DBBackups \ LSBackup_BulldogDB \ BulldogDB_20130225180000.trn' para la base de datos secundaria 'BulldogDB' porque el archivo no pudo ser verificado.
2013-02-25 13: 00: 12.32 *** Error: No se pudo registrar el historial / mensaje de error. (Microsoft.SqlServer.Management.LogShipping) ***
2013-02-25 13: 00: 12.32 *** Error: ExecuteNonQuery requiere una conexión abierta y disponible. El estado actual de la conexión está cerrado. (System.Data) ***
2013-02-25 13: 00: 12.33 *** Error: se produjo un error al restaurar el modo de acceso a la base de datos. (Microsoft.SqlServer.Management.LogShipping) ***
2013-02-25 13: 00: 12.33 *** Error: ExecuteScalar requiere una conexión abierta y disponible. El estado actual de la conexión está cerrado. (System.Data) ***
2013-02-25 13: 00: 12.33 *** Error: No se pudo registrar el historial / mensaje de error. (Microsoft.SqlServer.Management.LogShipping) ***
2013-02-25 13: 00: 12.33 *** Error: ExecuteNonQuery requiere una conexión abierta y disponible. El estado actual de la conexión está cerrado. (System.Data) ***
2013-02-25 13: 00: 12.33 *** Error: se produjo un error al restaurar el modo de acceso a la base de datos. (Microsoft.SqlServer.Management.LogShipping) ***
2013-02-25 13: 00: 12.33 *** Error: ExecuteScalar requiere una conexión abierta y disponible. El estado actual de la conexión está cerrado. (System.Data) ***
2013-02-25 13: 00: 12.33 *** Error: No se pudo registrar el historial / mensaje de error. (Microsoft.SqlServer.Management.LogShipping) ***
2013-02-25 13: 00: 12.33 *** Error: ExecuteNonQuery requiere una conexión abierta y disponible. El estado actual de la conexión está cerrado. (System.Data) ***
2013-02-25 13: 00: 12.33 Eliminación de archivos de copia de seguridad de registros antiguos. Base de datos primaria: 'BulldogDB'
2013-02-25 13: 00: 12.33 *** Error: No se pudo registrar el historial / mensaje de error. (Microsoft.SqlServer.Management.LogShipping) ***
2013-02-25 13: 00: 12.33 *** Error: ExecuteNonQuery requiere una conexión abierta y disponible. El estado actual de la conexión está cerrado. (System.Data) ***, 00: 00: 12,0,0 ,,,, 0
Mendel
fuente
Se rompe en que el trabajo LS_Restore no puede aplicar la copia de seguridad del registro de transacciones. Acabo de restablecer el envío de registros para que toda la información de registro de errores desaparezca de la base de datos. Los tengo guardados en alguna parte, los publicaré cuando pueda encontrarlos. Gracias.
Mendel
Obtenemos algo así como "Omitiendo el archivo de copia de seguridad del registro ... .trn para la base de datos secundaria 'DB' porque el archivo no se pudo verificar . No sé cómo verificaría específicamente si hay corrupción.
Mendel

Respuestas:

4

Si las copias de seguridad del registro se pueden restaurar mientras la base de datos secundaria está en NORECOVERY y solo falla cuando está en READ-ONLY / STANDBY, supongo que las copias de seguridad del registro están bien y no están dañadas.

Es posible que su componente de informes tenga una conexión abierta a la base de datos, por lo tanto, al restaurar el archivo de registro, no puede obtener una conexión exclusiva a la base de datos debido a las conexiones abiertas. Al configurar el envío de registros, habría una opción para desconectar cualquier conexión que le permita restaurar la copia de seguridad del registro.

Ian Chamberland
fuente
1
Esto es correcto. Para evitar esto, no permita que los trabajos de envío de registros se restablezcan con el modo de espera, pero agregue un segundo paso al trabajo que se restaurará con el modo de espera. RESTORE DATABASE [base de datos] con STANDBY = N'standbyfile '. Otra opción sería que la copia de seguridad del registro de transacciones no haya finalizado, intente agregar un retraso de 20 minutos para las restauraciones
Spörri
1

En el modo de espera La restauración secundaria solo desconecta a los usuarios cuando se inicia el trabajo, después de que los usuarios pueden comenzar a conectarse ... y esto detendrá el proceso de restauración con un error sobre "acceso exclusivo". Obtuve un servicio que intentó conectarse a la base de datos en espera mientras estaba en restauración. Eso hizo que el proceso de restauración se rompiera después de 1-10 / 100 archivos restaurados.

Wiedzm
fuente