Compartir a través de


Solucionar el error 3313, 3314, 3414 o 3456 (SQL Server)

Un error durante una operación de rehacer, deshace o recuperación en una base de datos de SQL Server coloca la base de datos en el estado SUSPECT. Tales errores incluyen los errores 3313 (error al rehacer el registro), 3314 (error al deshacer el registro), 3414 (error de recuperación que evita que se reinicie la base de datos) y el error 3456 (error al rehacer en una transacción de registros).

Explicación

Un error al rehacer, deshacer o de recuperación coloca la base de datos en el estado SUSPECT porque se sospecha del grupo de archivos principal, y posiblemente de otros grupos de archivos, y quizá estén dañados. La base de datos no está disponible y se requiere una acción del usuario para resolver el problema.

Nota

Si este error se produce para tempdb, la instancia de SQL Server se cierra.

Acción del usuario

Un error al rehacer, deshacer o de recuperación lo puede causar una condición transitoria o un error permanente que se produce siempre que intente iniciar la base de datos.

Para obtener información sobre la causa de una repetición dada de los errores 3313, 3314, 3414 o 3456, busque en el Registro de eventos de Windows un error previo que indique el error específico. Las acciones del usuario adecuadas dependen de si la información del Registro de eventos de Windows indica que el error de SQL Server lo causó una condición transitoria o un error permanente.

Nota

Cuando se produce cualquiera de estas tres condiciones de error, SQL Server suele generar tres archivos en la carpeta LOG de SQL Server. El archivo SQLDumpnnnn.txt contiene información de diagnóstico avanzada relacionada con los errores, incluidos detalles acerca de la transacción y la página en las que se encontró el problema. El equipo de soporte técnico de productos suele usar esta información para analizar el motivo del error.

En el caso de una condición transitoria:

  1. Intente poner la base de datos en línea ejecutando la siguiente instrucción ALTER DATABASE de Transact-SQL:

    ALTER DATABASE <database name> SET ONLINE;
    
  2. Para determinar si la recuperación finalizó correctamente y la base de datos se puso en línea, examine el registro de errores de SQL Server y la vista de catálogo sys.databases.

  3. Si la base de datos está en línea, ejecute la instrucción DBCC CHECKDB de Transact-SQL para comprobar si la base de datos es coherente.

En caso de que el error sea permanente:

Busque en el registro de errores de SQL Server el error que está solucionando (3313, 3314, 3414 o 3356) y revise los mensajes que lo preceden para determinar si puede corregirlos manualmente. Si puede corregir los errores anteriores, realice uno de los siguientes procedimientos:

  • Restaure y compruebe la base de datos (el procedimiento recomendado), como sigue:

    1. Intente hacer una copia del final del registro.

    2. Restaure la base de datos a partir de una copia de seguridad total de la base de datos, seguida de una copia de seguridad de la base de datos diferencial si lo desea, mediante la instrucción RESTORE …WITH NORECOVERY de Transact-SQL.

    3. Si la base de datos usa el modelo de recuperación completa, aplique todas las copias de seguridad del registro de transacciones tomadas tras la restauración de la copia de seguridad completa o diferencial hasta el momento en que se produjo el error usando RESTORE LOG … WITH NORECOVERY.

    4. Cuando haya restaurado la base de datos hasta un momento lo más cercano posible al momento en que se produjo el error, recupere la base de datos usando RESTORE DATABASE <nombreDeBaseDeDatos> WITH RECOVERY.

    5. Una vez que la base de datos esté en línea, ejecute la instrucción DBCC CHECKDB de Transact-SQL para comprobar si es coherente.

  • Intente poner la base de datos con conexión siguiendo los pasos descritos para un error transitorio, anteriormente en esta sección.

  • Utilice el modo de emergencia, como sigue:

    1. Haga la transición de la base de datos al estado EMERGENCY ejecutando la siguiente instrucción ALTER DATABASE de Transact-SQL:

      ALTER DATABASE <database_name> SET EMERGENCY; 
      
    2. Revise el resultado de la instrucción ALTER DATABASE y del registro de errores de SQL Server.

    3. Examine el estado de la base de datos en la vista de catálogo sys.databases.

    4. Realice una comprobación de coherencia con la base de datos mediante la instrucción DBCC CHECKDB para entender la naturaleza y la extensión del daño.

    5. Después de evaluar el resultado de DBCC CHECKDB, puede decidir ejecutar DBCC CHECKDB con la opción REPAIR_ALLOW_DATA_LOSS.

      Nota de advertenciaAdvertencia

      Antes de utilizar la opción, revise cuidadosamente la información acerca de cómo resolver los errores en el modo de emergencia de base de datos, en el tema DBCC CHECKDB (Transact-SQL) de los Libros en pantalla de SQL Server.

Nota

Para obtener información sobre cómo responder a los problemas de hardware pertinentes a los errores 3313, 3314, 3414 o 3356, vea MSSQLSERVER_824.

Pasos para evitar este error

Para evitar encontrarse de nuevo en esta situación, haga lo siguiente:

  1. Revise el registro de errores de SQL Server y los registros de eventos de Windows en busca de algún problema de todo el sistema que pueda contribuir a este error.

  2. Para descartar los problemas conocidos del producto que conduzcan a esta condición, aplique la actualización acumulativa más reciente para su versión de SQL Server.