solo selecciono seguridad script restaurarlo restaurar por para otro nombre ningun log ldf datos copias conjunto con codigo sql-server sql-server-2005 mdf data-recovery

selecciono - Cómo recuperar la base de datos de MDF en SQL Server 2005?



restaurar base de datos sql server sin log (8)

Tengo un archivo MDF y ningún archivo LDF para una base de datos creada en MS SQL Server 2005. Cuando intento adjuntar el archivo MDF a un servidor SQL diferente, aparece el siguiente mensaje de error.

The log cannot be rebuilt because there were open transactions/users when the database was shutdown, no checkpoint occurred to the database, or the database was read-only. This error could occur if the transaction log file was manually deleted or lost due to a hardware or environment failure.

Me gustaría lograr alguna de las siguientes opciones:

  1. Adjunte la base de datos sin pérdida de datos (poco probable, pero me ahorraría algo de tiempo).
  2. Adjunte la base de datos con pérdida de datos (se pierden las transacciones abiertas).
  3. Recupere el esquema solamente (sin datos) del archivo MDF.

¿Qué comandos SQL puedo intentar para que mi base de datos vuelva a funcionar?


Encontré el siguiente documento en Experts Exchange .

patrikt: Tendrás pérdida de datos pero se puede hacer.

1. Detach database and move your mdf to save location. 2. Create new databse of same name, same files, same file location and same file size. 3. Stop SQL server. 4. Swap mdf file of just created DB to your save one. 5. Start SQL. DB will go suspect. 6. ALTER DATABASE yourdb SET EMERGENCY 7. ALTER DATABASE yourdb SET SINGLE_USER 8. DBCC CHECKDB (yourdb, REPAIR_ALLOW_DATA_LOSS) 9. ALTER DATABASE yourdb SET MULTI_USER 10. ALTER DATABASE yourdb SET ONLINE



has intentado ignorar el ldf y simplemente adjuntas el mdf:

sp_attach_single_file_db [@dbname =] ''dbname'', [@physname =] ''physical_name''

No sé exactamente qué pasará con sus transacciones abiertas (probablemente solo se pierda), pero podría volver a poner sus datos en línea.

-don



Encontrado de otra manera que funciona completamente:

  1. Cree una nueva base de datos con el mismo nombre para la ubicación predeterminada de la base de datos.
  2. Detener el servidor SQL.
  3. Copie el archivo mdf antiguo para sobrescribir el archivo mdf recién creado y elimine el nuevo archivo ldf
  4. Inicie SQL Server, la base de datos estará en modo de emergencia
  5. Separar la base de datos de modo de emergencia
  6. Copie el archivo ldf original a la ubicación predeterminada de la base de datos (donde se creó y eliminó el nuevo archivo LDF en el paso 3 anterior).
  7. Adjunte el archivo MDF de la base de datos.

Obtuve una base de datos en funcionamiento después de probar todo lo anterior que me falló.


DESDE una publicación en SQL Server Forums Adjuntando MDF sin LDF :

Si desea adjuntar un MDF sin LDF, puede seguir los pasos a continuación. Se prueba y funciona bien

  1. Crea una nueva base de datos con el mismo nombre y los mismos archivos MDF y LDF

  2. Detenga el servidor sql y cambie el nombre del MDF existente por uno nuevo y copie el MDF original a esta ubicación y elimine los archivos LDF.

  3. Inicie SQL Server

  4. Ahora su base de datos se marcará sospechosa. 5. Actualice las bases de datos del sistema para actualizar al modo de emergencia. Esto no usará archivos LOG en el inicio

Sp_configure "allow updates", 1 go Reconfigure with override GO Update sysdatabases set status = 32768 where name = "BadDbName" go Sp_configure "allow updates", 0 go Reconfigure with override GO

  1. Reinicie el servidor sql. ahora la base de datos estará en modo de emergencia

  2. Ahora ejecuta el DBCC no documentado para crear un archivo de registro

DBCC REBUILD_LOG (dbname, ''c: / dbname.ldf'') - Paso sin documentar para crear un nuevo archivo de registro.

(reemplace el nombre de base de datos y el nombre de archivo de registro según su requisito)

  1. Ejecute sp_resetstatus

  2. Reinicie el servidor SQL y vea que la base de datos está en línea.

ACTUALIZACIÓN: DBCC REBUILD_LOG no existe SQL2005 y superior. Esto debería funcionar:

USE [master] GO CREATE DATABASE [Test] ON (FILENAME = N''C:/MSSQL/Data/Test.mdf'') FOR ATTACH_REBUILD_LOG GO


Aquí hay detalles que cubren las partes 2) y 3) en caso de que la recreación del registro no funcione, lo que puede ocurrir si el archivo MDF está dañado.

Puede recuperar datos y estructura solo leyendo archivos MDF con alguna herramienta de terceros que pueda descifrar lo que está escrito como datos binarios, pero incluso con tales herramientas no siempre puede hacer el trabajo por completo.

En tales casos, puede intentar ApexSQL Recover . Por lo que sé, esta es la única herramienta que puede hacer este tipo de trabajo pero es bastante costosa.

Una idea mucho mejor es tratar de recuperar estos de cualquier copia de seguridad anterior, si tiene alguno.


Espero que sea fácil de hacer,

  1. Abrir SQL Server
  2. Haga clic en Nueva consulta
  3. Ejecute la siguiente consulta

    sp_attach_single_file_db @ dbname = ''dbname'', @ physname = ''C: / Database / dbname.MDF''

Donde dbname es que desea mostrar en el Explorador de objetos, donde @physname es la ubicación de @physname archivo local de su archivo mdf.

Espero que ayude a alguien, lo hice por encima, obtuve tanto la estructura como los datos.

Probado en Sql Server 2000 y 2008. En Sql Server 2000 no funciona, pero funciona perfectamente en 2008.