Share via


Solucionar errores 3313, 3314, 3414 o 3456 (SQL Server)

Un error durante una operación de rehacer, deshacer o recuperar en una base de datos de SQL Server la coloca en el estado SUSPECT. Entre esos errores se incluyen los siguientes: 3313 (error al rehacer el registro), 3314 (error al deshacer el registro), 3414 (error de recuperación que evita el reinicio de la base de datos) y 3456 (error al rehacer en una transacción registrada).

Explicación

Un error durante una operación de rehacer, deshacer o recuperar coloca la base de datos en el estado SUSPECT porque el grupo de archivos principal, y posiblemente otros grupos de archivos, son sospechosos y pueden estar 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

Una operación de rehacer, deshacer o recuperar se puede producir por una condición transitoria o por un error permanente cada vez que se intenta iniciar la base de datos.

[!NOTA]

Cuando se produce cualquiera de estas condiciones de error, SQL Server normalmente genera 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 los detalles acerca de la transacción y la página en que se produjo el problema. El equipo de soporte técnico de productos suele usar esta información para analizar el motivo del error.

Para obtener información sobre la causa de la aparición determinada de un error 3313, 3314, 3414 o 3456, examine el registro de eventos de Windows para buscar un error anterior que indique el error concreto. Las acciones del usuario adecuadas dependerán de si la información existente en el registro de eventos de Windows indica que el error de SQL Server se debe a una condición transitoria o a un error permanente.

En el caso de una condición transitoria:

  1. Intente poner la base de datos en modo de conexión ejecutando la siguiente instrucción Transact-SQLALTER DATABASE:

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

  3. Si la base de datos está en modo de conexión, ejecute la instrucción Transact-SQLDBCC CHECKDB para comprobar si la base de datos es coherente.

En el caso de que el error sea permanente:

Busque en el registro de errores de SQL Server el error que desea solucionar (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 (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, si lo desea, de una copia de seguridad diferencial de la base de datos, mediante la instrucción Transact-SQLRESTORE …WITH NORECOVERY.

    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 modo de conexión, ejecute la instrucción Transact-SQLDBCC CHECKDB para comprobar si la base de datos es coherente.

  • Intente poner la base de datos en modo de 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 Transact-SQLALTER DATABASE:

      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 elegir 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 acerca de cómo responder a los problemas de hardware correspondientes 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.