Estamos utilizando el envío de registros y RESTORE WITH STANDBY
en 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 NORECOVERY
No 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 RESTORE
proceso?
¿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
Respuestas:
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.
fuente
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.
fuente