none
Base de datos SQL Recovery Pending RRS feed

  • Pregunta

  • Buenas Tardes

    Estimados, últimamente he notado que mis bases de datos se colocan en estado recovery pending cual podría ser la razón.

    1-. Sistema Operativo Corrputo....Corrupto jaja

    2-. Problemas del motor de base de datos.

    3-. Falta de Recursos en el servidor ( Performance?, como puedo solventar este error).

    Actualmente tengo unas bases de datos offline, porque en algún momento tambiénarrojaron fallas por problemas en los controladores del ambiente y tuvimos que hacer un backup restore.

    Les anexo la imagen y los logs para que me ayuden a determinar este extraño comportamiento y cual seria la mejor vía a tomar para solventar el Issue.


    Juan C. Landa Desarrollo de App Landa Soluciones


    jueves, 19 de septiembre de 2019 16:09

Respuestas

  • Intente esto:

    Option 1

    ALTER DATABASE [DBName] SET EMERGENCY;
    GO
    ALTER DATABASE [DBName] set single_user
    GO
    DBCC CHECKDB ([DBName], REPAIR_ALLOW_DATA_LOSS) WITH ALL_ERRORMSGS;
    GO
    ALTER DATABASE [DBName] set multi_user
    GO

    Option 2

    ALTER DATABASE [DBName] SET EMERGENCY;
    GO
    ALTER DATABASE [DBName] set multi_user;
    GO
    EXEC sp_detach_db ‘[DBName]’;
    GO
    EXEC sp_attach_single_file_db @DBName = ‘[DBName]’, @physname = N'[mdf path]’;
    GO


    IIslas Master Consultant SQL Server

    jueves, 19 de septiembre de 2019 20:52
  • Por favor no hagas lo que te dice iislas de primera instancia, un repair_allow_data_loss debe ser de las ultimas opciones, un detach puede ser malo también.

    Primero por lo que mencionas es algo comun que te pace, primero es un hardware virtual o físico? como esta conectado tu storage (tiene redundancia), mencionas un fallo de poder en el sistema.

    No mencionas tampoco que versión y build de SQL estas usando.

    1-. Sistema Operativo Corrputo....Corrupto jaja

    2-. Problemas del motor de base de datos.

    3-. Falta de Recursos en el servidor ( Performance?, como puedo solventar este error).

    1.- Muy raro pero posible buscaria errores de windows primero

    2.- Para eso necesitamos saber tu build y tu versión de SQL server un 'select @@version' nos dara esto

    3.- Casi imposible que este decante en corrupción.

    Los errores que muestras es seguridad y conectevidad nada que ver con el error de corrupción.


    Blog: www.sqlservertoolbox.blogspot.com.mx

    viernes, 20 de septiembre de 2019 13:24
  • Juan

    Recovery Pending – If the SQL Server knows that database recovery needs to be run but something is preventing it from starting. This is different from the SUSPECT state because it can’t be said that recovery is going to fail – it just hasn’t started yet.

    here is ref: https://www.stellarinfo.com/blog/fix-sql-database-recovery-pending-state-issue/

    viernes, 20 de septiembre de 2019 9:42
  • Hola

    Recomiendo, solo lo que en campo he probado y me ha funcionado, este codigo que sugiero me fue entregado directamente por personal de Microsoft para resolver un problema con un cliente, mismo que aplique y funciono.

    No tuve que utilizar el detach

    Saludos


    IIslas Master Consultant SQL Server

    viernes, 20 de septiembre de 2019 16:23
  • Buenas Tardes

    Gracias por la pronta respuesta pero déjame comentarte lo siguiente:

    1-. La version de sql es :

    Microsoft SQL Server 2014 (SP2-CU15) (KB4469137) - 12.0.5605.1 (X64) 
    Nov 30 2018 02:08:03 
    Copyright (c) Microsoft Corporation
    Standard Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: ) (Hypervisor)

    2-. A pesar de ser un VPS Dedicado, el servidor sigue siendo una maquina virtualizada con QMEU, esa es la infraestructura donde esta montado el servidor.

    3-. El servidor donde esta alojado el motor de base de datos, aparentemente no tiene errores o fallas a nivel SO.

    NOTA: Lo que pretendo determinar es la causa de este error y el porque para evitarme fallas a futuro, y hacer recomendaciones al cliente.

    Gracias por el apoyo


    2-. 


    Juan C. Landa Desarrollo de App Landa Soluciones

    viernes, 20 de septiembre de 2019 16:37

Todas las respuestas

  • Intente esto:

    Option 1

    ALTER DATABASE [DBName] SET EMERGENCY;
    GO
    ALTER DATABASE [DBName] set single_user
    GO
    DBCC CHECKDB ([DBName], REPAIR_ALLOW_DATA_LOSS) WITH ALL_ERRORMSGS;
    GO
    ALTER DATABASE [DBName] set multi_user
    GO

    Option 2

    ALTER DATABASE [DBName] SET EMERGENCY;
    GO
    ALTER DATABASE [DBName] set multi_user;
    GO
    EXEC sp_detach_db ‘[DBName]’;
    GO
    EXEC sp_attach_single_file_db @DBName = ‘[DBName]’, @physname = N'[mdf path]’;
    GO


    IIslas Master Consultant SQL Server

    jueves, 19 de septiembre de 2019 20:52
  • Juan

    Recovery Pending – If the SQL Server knows that database recovery needs to be run but something is preventing it from starting. This is different from the SUSPECT state because it can’t be said that recovery is going to fail – it just hasn’t started yet.

    here is ref: https://www.stellarinfo.com/blog/fix-sql-database-recovery-pending-state-issue/

    viernes, 20 de septiembre de 2019 9:42
  • Por favor no hagas lo que te dice iislas de primera instancia, un repair_allow_data_loss debe ser de las ultimas opciones, un detach puede ser malo también.

    Primero por lo que mencionas es algo comun que te pace, primero es un hardware virtual o físico? como esta conectado tu storage (tiene redundancia), mencionas un fallo de poder en el sistema.

    No mencionas tampoco que versión y build de SQL estas usando.

    1-. Sistema Operativo Corrputo....Corrupto jaja

    2-. Problemas del motor de base de datos.

    3-. Falta de Recursos en el servidor ( Performance?, como puedo solventar este error).

    1.- Muy raro pero posible buscaria errores de windows primero

    2.- Para eso necesitamos saber tu build y tu versión de SQL server un 'select @@version' nos dara esto

    3.- Casi imposible que este decante en corrupción.

    Los errores que muestras es seguridad y conectevidad nada que ver con el error de corrupción.


    Blog: www.sqlservertoolbox.blogspot.com.mx

    viernes, 20 de septiembre de 2019 13:24
  • Hola

    Recomiendo, solo lo que en campo he probado y me ha funcionado, este codigo que sugiero me fue entregado directamente por personal de Microsoft para resolver un problema con un cliente, mismo que aplique y funciono.

    No tuve que utilizar el detach

    Saludos


    IIslas Master Consultant SQL Server

    viernes, 20 de septiembre de 2019 16:23
  • Saludos,

    Esos es la ultima opción y Microsoft no hace recuperación de desastres te debio decir que usaras el backup para restaurar y eso era sobre tu propio riesgo e informarte de la perdida de información (te lo dice alguien que estuvo 3 años como ingeniero de soporte en Microsoft en SQL Server).


    Blog: www.sqlservertoolbox.blogspot.com.mx

    viernes, 20 de septiembre de 2019 16:34
  • Buenas Tardes

    Gracias por la pronta respuesta pero déjame comentarte lo siguiente:

    1-. La version de sql es :

    Microsoft SQL Server 2014 (SP2-CU15) (KB4469137) - 12.0.5605.1 (X64) 
    Nov 30 2018 02:08:03 
    Copyright (c) Microsoft Corporation
    Standard Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: ) (Hypervisor)

    2-. A pesar de ser un VPS Dedicado, el servidor sigue siendo una maquina virtualizada con QMEU, esa es la infraestructura donde esta montado el servidor.

    3-. El servidor donde esta alojado el motor de base de datos, aparentemente no tiene errores o fallas a nivel SO.

    NOTA: Lo que pretendo determinar es la causa de este error y el porque para evitarme fallas a futuro, y hacer recomendaciones al cliente.

    Gracias por el apoyo


    2-. 


    Juan C. Landa Desarrollo de App Landa Soluciones

    viernes, 20 de septiembre de 2019 16:37
  • Saludos Juan,

    En este momento en que estado esta tu servidor? y la base en cuestion? ya haz hecho un checkdb completo a todas tus bases de datos (sin allow data loss ni nada) un simple checkdb?


    Blog: www.sqlservertoolbox.blogspot.com.mx

    viernes, 20 de septiembre de 2019 16:42
  • Buenas Tardes 

    Enrique, gracias por el comentario en este instante el servidor esta operativo y la base de datos operando...Logre hacer un backup restore y funciono, pero 24 horas después volvió a ponerse una de las BD en estado recovery pending y necesito determinar el porque, y que puedo hacer para que esto no suceda nuevamente.


    Juan C. Landa Desarrollo de App Landa Soluciones

    viernes, 20 de septiembre de 2019 18:57
  • Saludos,

    Primero haz un checkdb, luego busca en el error log y la carpeta de logs haber sino tienes memory dumps, si tienes memory dumps abriria un caso con Microsoft.

    Aunque antes de eso ve a la ultima version estas un poco desactualizado.

    https://sqlserverbuilds.blogspot.com/


    Blog: www.sqlservertoolbox.blogspot.com.mx

    viernes, 20 de septiembre de 2019 19:05
  • Enrique discúlpame en mi comentario anterior no te comente que si ejecutamos:

    • checkdb
    • checkdb repair_data_loos 
    • etc

    Nada de esto funcionó y tuve que hacer un backup restore....Ya esta operativo pero ya en 2 oportunidades se me ha puesto en estado recovery pendig.....


    Juan C. Landa Desarrollo de App Landa Soluciones

    viernes, 20 de septiembre de 2019 19:05
  • Buenos Días

    Saludos, master si voy a actualizar nuestro motor espero corregir varios errores y te comento luego a ver como se comporta, tendrán a la mano el link para abrir un caso con soporte microsoft...


    Juan C. Landa Desarrollo de App Landa Soluciones

    lunes, 23 de septiembre de 2019 16:27
  • No vi el anterior a este, por favor mantenos al tanto.

    Blog: www.sqlservertoolbox.blogspot.com.mx

    lunes, 23 de septiembre de 2019 17:22
  • Buenas Tardes

    Adicionalmente estoy tratando de ejecutar un backup del día de hoy y m esta mandando este error:

    Definitivamente debe haber un error en el disco, donde estoy intentando hacer el backup, el tema esta en que también lo trato de grabar en otra unidad y el resultado es el mismo... También intento la ejecución por este lado pero me finaliza también en error, poniéndose la bd en recovery

    DECLARE @name VARCHAR(50) -- database name  
    DECLARE @path VARCHAR(256) -- path for backup files  
    DECLARE @fileName VARCHAR(256) -- filename for backup  
    DECLARE @fileDate VARCHAR(20) -- used for file name
     
    -- specify database backup directory
    SET @path = '\\mirutaxxx\'  
     
    -- specify filename format
    SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112) + REPLACE(CONVERT(VARCHAR(20),GETDATE(),108),':','')
     
    DECLARE db_cursor CURSOR READ_ONLY FOR  
    SELECT name 
    FROM master.dbo.sysdatabases 
    WHERE name NOT IN ('master','model','msdb','tempdb','base_1','Base_2','base3')  -- exclude these databases
     
    OPEN db_cursor   
    FETCH NEXT FROM db_cursor INTO @name   
     
    WHILE @@FETCH_STATUS = 0   
    BEGIN   
       SET @fileName = @path + @name + '_' + @fileDate + '.BAK'  
       BACKUP DATABASE @name TO DISK = @fileName WITH continue_after_error 
     
       FETCH NEXT FROM db_cursor INTO @name   
    END   

     
    CLOSE db_cursor   
    DEALLOCATE db_cursor

    Que puedo hacer para solventar.....Y prevenirme con estos errores


    Juan C. Landa Desarrollo de App Landa Soluciones

    lunes, 23 de septiembre de 2019 18:47
  • Saludos,

    Ve con tu provedor de storage, parece que esta haciendo un rollback de momento ve que la transaccion no quede abierta y te debe de dejar, veo que usas un path relativo, busca a un disco local de ser posible, algo esta mal con tu storage. 


    Blog: www.sqlservertoolbox.blogspot.com.mx

    lunes, 23 de septiembre de 2019 18:50
  • buenas tardes

    Estimado, enrique si cambio el path a local :

    El error sigue siendo el mismo....


    Juan C. Landa Desarrollo de App Landa Soluciones

    lunes, 23 de septiembre de 2019 20:53
  • Saludos, 

    Podrias poner el error completo que da.


    Blog: www.sqlservertoolbox.blogspot.com.mx

    lunes, 23 de septiembre de 2019 21:00
  • Luego me pasa la base de datos a recovery pending, y debo hacer el proceso de colocarla online y recuperarla para luego poder volver a acceder a la aplicación


    Juan C. Landa Desarrollo de App Landa Soluciones

    lunes, 23 de septiembre de 2019 23:53
  • Estas en una situación que no pinta bien si tienes backup saludables mi recomendacion es usa otro server y levanta aqui, renombra y el server a este dale los mismo ip, luego haz un 

    DBCC CHECKDB (<Database Name>) WITH NO_INFOMSGS, ALL_ERRORMSGS


    Al servidor antiguo formatealo y pide al area de storage si tienes que haga una revision completa del storage, si algo simple un checkdb detallado y esperemos que salga que esta dañado, tu problema parece ser 100% hardware en este punto lo mejor es esto.


    Blog: www.sqlservertoolbox.blogspot.com.mx

    martes, 24 de septiembre de 2019 3:27
  • Hola:

    Me daba el mismo error. El entorno es diferente pero lo cuento por si es de ayuda a un tercero.

    Pc local en el cual está instalado MSQLSManagement. En un disco secundario está el archivo .mdf y ldf que he 'Attach'. Este disco está encriptado y debo meterle una password para pode tener acceso al mismo.

    Cuando arranco el Pc, el servicio MSSQL$SQLEXPRESS está en ejecución aunque no haya arrancado el MSQLSManagement. Cuando arranco el programa, una vez que tengo acceso al disco secundario, y sobre las BBDD que están asociadas a un archivo .mdf y ldf. me sale 'Recovery pending'. Sobre aquellas que hice un 'Restore' sobre un .bak funcionan sin problema.

    SOLUCIÓN: arranco pc, habilito el acceso al disco secundario, detengo el servicio MSSQL$SQLEXPRESS, lo vuelo a iniciar, y cuando está en ejecución, abro la aplicación  MSQLSManagement. Y funciona.

    Un saludo

    jueves, 1 de septiembre de 2022 7:37
  • Muchas gracias ingeniero, me funciono a la perfección su código sin tanto rodeo, Felicidades Saludos 
    lunes, 27 de febrero de 2023 21:09