none
recuperar una base de datos RRS feed

  • Pregunta

  • tengo un problema tube problemas con la energia y estaba trabanjando en una base de datos , cuando volvi habir el sql server la base de datos en la que estaba trabajando se puso que no me deja accesar alas tablas y no puedo obtener informacion sobre sus propiedades por favor ayudaaaaaa , no tengo backup  de datos ni de log que hago ? ayudaaaaaaaaaaaaaa
    martes, 11 de junio de 2013 21:48

Respuestas

  • Supongo que estás ejecutando todo esto como SA, primero trata con 

    ALTER DATABASE NombreBD SET SINGLE_USER WITH ROLLBACK IMMEDIATE

    A este punto, si no estoy errado podrás acceder a los datos en modo solo lectura, podrás exportar los datos a una nueva base.

    Luego aplica un para verificar tu BD:

    USE NombreBD

    GO

    DBCC CHECKDB

    GO

    En caso de encontrar algún error, puedes aplicar el siguiente pero pues obviamente perderás la información que se haya dañado:

    DBCC CHECKDB (NombreBD, REPAIR_ALLOW_DATA_LOSS)

    Si no tienes problemas, tu BD estará ONLINE y aplicas lo siguiente:

    ALTER DATABASE NombreBD SET MULTI_USER WITH ROLLBACK IMMEDIATE
    GO

    Sergio Sánchez Arias
    Oaxaca,México
    AYÚDANOS A AYUDARTE

    • Marcado como respuesta luisbenjamin89 viernes, 14 de junio de 2013 19:52
    miércoles, 12 de junio de 2013 16:56

Todas las respuestas

  • No somos adivinos Luis, que error te aparece? por favor lee estas reglas antes de continuar

    Tambien solo puede ser que la base de datos se esté recuperando y por eso no te dejaba acceder, normalmente luego de unos minutos, dependiendo del tamaño el motor recupera por sí solo el estado normal de las bases de datos que sufren este tipo de percanses..

    martes, 11 de junio de 2013 23:41
  • Seguramente se puso en Status Recovery, es normal cuando hay un corte de energía, la base de datos se protege para prevenir algun daño ( Como Ronald te dice ); Después de cierto tiempo, podras consultar la base de datos... puedes utilizar el siguiente script para conocer cuando fue que se puso en ese estatus y cuanto tiempo le tomará en restablecerse.

    DECLARE @DBName VARCHAR(64) = 'databasename'
     
    DECLARE @ErrorLog AS TABLE([LogDate] CHAR(24), [ProcessInfo] VARCHAR(64), [TEXT] VARCHAR(MAX))
     
    INSERT INTO @ErrorLog
    EXEC sys.xp_readerrorlog 0, 1, 'Recovery of database', @DBName
     
    SELECT TOP 5
    	 [LogDate]
    	,SUBSTRING([TEXT], CHARINDEX(') is ', [TEXT]) + 4,CHARINDEX(' complete (', [TEXT]) - CHARINDEX(') is ', [TEXT]) - 4) AS PercentComplete
    	,CAST(SUBSTRING([TEXT], CHARINDEX('approximately', [TEXT]) + 13,CHARINDEX(' seconds remain', [TEXT]) - CHARINDEX('approximately', [TEXT]) - 13) AS FLOAT)/60.0 AS MinutesRemaining
    	,CAST(SUBSTRING([TEXT], CHARINDEX('approximately', [TEXT]) + 13,CHARINDEX(' seconds remain', [TEXT]) - CHARINDEX('approximately', [TEXT]) - 13) AS FLOAT)/60.0/60.0 AS HoursRemaining
    	,[TEXT]
     
    FROM @ErrorLog ORDER BY [LogDate] DESC

    Para SQL SERVER 2012

    DECLARE @DBName VARCHAR(64) = 'databasename'
     
    DECLARE @ErrorLog AS TABLE([LogDate] CHAR(24), [ProcessInfo] VARCHAR(64), [TEXT] VARCHAR(MAX))
     
    INSERT INTO @ErrorLog
    EXEC master..sp_readerrorlog 0, 1, 'Recovery of database', @DBName
     
    SELECT TOP 5
    	 [LogDate]
    	,SUBSTRING([TEXT], CHARINDEX(') is ', [TEXT]) + 4,CHARINDEX(' complete (', [TEXT]) - CHARINDEX(') is ', [TEXT]) - 4) AS PercentComplete
    	,CAST(SUBSTRING([TEXT], CHARINDEX('approximately', [TEXT]) + 13,CHARINDEX(' seconds remain', [TEXT]) - CHARINDEX('approximately', [TEXT]) - 13) AS FLOAT)/60.0 AS MinutesRemaining
    	,CAST(SUBSTRING([TEXT], CHARINDEX('approximately', [TEXT]) + 13,CHARINDEX(' seconds remain', [TEXT]) - CHARINDEX('approximately', [TEXT]) - 13) AS FLOAT)/60.0/60.0 AS HoursRemaining
    	,[TEXT]
     
    FROM @ErrorLog ORDER BY [LogDate] DESC

    Después que se le quite el STATUS RECOVERY, debes correr un DBCC CHECKDB para verificar que no haya sufrido algún daño.

    SALUDOS!


    Sergio Sánchez Arias
    Oaxaca,México
    AYÚDANOS A AYUDARTE

    miércoles, 12 de junio de 2013 0:20
  • el error que me sale es el error 945 , y la base de datos se me puso en modo sospechoso , he intentado con algunos script que he encontrado pero nada sigue en modo sospechoso y no puedo acceder a ella 
    miércoles, 12 de junio de 2013 14:02
  • estoy ocupando sql 2005 
    miércoles, 12 de junio de 2013 14:37
  • Ok, esto me sucedio en una ocasión lo que hice fue seguir los pasos de EL GUILLE:

    ALTER DATABASE nombreBaseDatos SET EMERGENCY
    GO
    ALTER DATABASE nombreBaseDatos SET SINGLE_USER 
    WITH ROLLBACK IMMEDIATE
    GO
    DBCC CHECKDB (nombreBaseDatos , REPAIR_ALLOW_DATA_LOSS)
    GO
    ALTER DATABASE nombreBaseDatos SET MULTI_USER
    GO

    Recuperar Base de Datos Sospechosa (Suspect) en SQL Server 2005


    Sergio Sánchez Arias
    Oaxaca,México
    AYÚDANOS A AYUDARTE

    miércoles, 12 de junio de 2013 14:49
  • ya probe eso y no me funciona ya que cuando quiero hacer el

    DBCC CHECKDB (nombreBaseDatos , REPAIR_ALLOW_DATA_LOSS)

     me dice lo siguiente :

    Msg 922, Level 14, State 1, Line 2
    Database 'RES' is being recovered. Waiting until recovery is finished.

     
    miércoles, 12 de junio de 2013 14:54
  • el error del log de errores del sql dice que no se encuentra los archivos mdf y ldf de la base en la que estoy trabajando y siempre la tengo en modo de emergencia y no puedo acceder a sus propiedades ni alas tablas de la base de datos 
    miércoles, 12 de junio de 2013 16:11
  • Supongo que estás ejecutando todo esto como SA, primero trata con 

    ALTER DATABASE NombreBD SET SINGLE_USER WITH ROLLBACK IMMEDIATE

    A este punto, si no estoy errado podrás acceder a los datos en modo solo lectura, podrás exportar los datos a una nueva base.

    Luego aplica un para verificar tu BD:

    USE NombreBD

    GO

    DBCC CHECKDB

    GO

    En caso de encontrar algún error, puedes aplicar el siguiente pero pues obviamente perderás la información que se haya dañado:

    DBCC CHECKDB (NombreBD, REPAIR_ALLOW_DATA_LOSS)

    Si no tienes problemas, tu BD estará ONLINE y aplicas lo siguiente:

    ALTER DATABASE NombreBD SET MULTI_USER WITH ROLLBACK IMMEDIATE
    GO

    Sergio Sánchez Arias
    Oaxaca,México
    AYÚDANOS A AYUDARTE

    • Marcado como respuesta luisbenjamin89 viernes, 14 de junio de 2013 19:52
    miércoles, 12 de junio de 2013 16:56
  • santiago me da error con

    ALTER DATABASE NombreBD SET SINGLE_USER WITH ROLLBACK IMMEDIATE

    me dice esto :

    Msg 5120, Level 16, State 101, Line 2
    Unable to open the physical file "C:\Program Files\Microsoft SQL Server\MSSQL11.BENJAMIN\MSSQL\DATA\prueba.mdf". Operating system error 2: "2(El sistema no puede encontrar el archivo especificado.)".

    como te dije no tengo el mdf ni el ldf de la base

    miércoles, 12 de junio de 2013 17:11
  • Hola, Luis, primero valida fisicamente si tienes los archivos disponibles , despues realiza un backup de esos archivos fisicos(incluyendo mdf.ldf y log).

    Segundo, ingresa en modo unico usuario

    Intenta ingresa en modo lo minimo requerido (http://msdn.microsoft.com/es-es/library/ms190737(v=sql.105).aspx)

    y continuar con los pasos que dicen los campa;eros de forum

    • Propuesto como respuesta j.c.m.artinez miércoles, 12 de junio de 2013 19:46
    miércoles, 12 de junio de 2013 19:46
  • jcm artinez vea yo no tengo los mdf y ldf , el servidor donde esta dando ese problema yo no administro y pues me lo asignaron en mi trabajo para que solucione ese problema , busco el mdf y el ldf de la base de datos y no esta por ningun aldo en el servidor ni en ninguno de los volumenes que tiene comportido , no se si fue q la persona q lo administraba los borro o si realmente esto fue causa de la suspencion de energuia que ocurrio en el datacenter en donde estaba el servidor 
    miércoles, 12 de junio de 2013 19:53
  • luisbenjamin, pues no encuentro más que primero ver que sucedió con los archivos.. donde se encuentran ?? Verifica los logs de SQL SERVER, además de los logs de Windows si es que hay registro de la base borrada más o menos a la hora que sucedió ese corte de energía, ya que sin los archivos pues no podrás hacer mucho.


    Sergio Sánchez Arias
    Oaxaca,México
    AYÚDANOS A AYUDARTE

    miércoles, 12 de junio de 2013 19:57
  • sergioSA la verdad muchas gracias por tus aportes pero yo tambien ya estoy que no se q mas hacer voy a revisar  los los log de window ya q solo revise los de sql y en ellos se refleja la perdida del los archivos , gracias hermano una vez mas ...
    miércoles, 12 de junio de 2013 20:06
  • Hola.

    ¿Resolviste el problema?


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.com
    Sígueme en twitter en http://twitter.com/qwalgrande

    viernes, 14 de junio de 2013 19:44
    Moderador
  • nop es q sin los archivos mdf no podia hacer nada 
    viernes, 14 de junio de 2013 19:47
  • Hola.

    Pues nada, ya sabes que hay que hacer backup. Lamentablemente, has tenido que aprender la lección de la forma más dolorosa. Tendríamos que cerrar el hilo, ya que su recorrido creo que ha finalizado.


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.com
    Sígueme en twitter en http://twitter.com/qwalgrande

    viernes, 14 de junio de 2013 19:53
    Moderador