2009-05-29 27 views
6

¿Cómo puedo adjuntar una base de datos sin un archivo LDF en SQL Server?¿Cómo adjuntar una base de datos sin un archivo LDF?

+1

Solo tiene que agregar que puede obtener una base de datos inconsistente haciendo esto. Es mucho mejor adjuntarlo con el LDF original. Consulte https://blogs.msdn.com/sqlserverstorageengine/archive/2006/06/15/632398.aspx –

Respuesta

8

Puede usar sp_attach_single_file_db para adjuntar una base de datos a la que le falta su archivo de registro.

+0

Proporciona este error: No se pudo abrir la nueva base de datos 'SharedCS'. CREATE DATABASE está abortado. Error de activación del dispositivo. El nombre de archivo físico 'd: \ Archivos de programa \ Microsoft SQL Server \ MSSQL \ data \ dummy_Log.LDF' puede ser incorrecto. – Ricardo

+0

No intente adjuntar un registro falso. ¿Puedes publicar el comando sp_attach_single_file_db que estás ejecutando? –

+1

Esto solo funciona si el archivo de registro puede crearse nuevamente donde dice .mdf. – Joshua

1

Puedes "simplemente hacerlo", lanzará una advertencia de que no pudo encontrar el .ldf, pero aún así adjuntará el db.

+0

Da un error y la base de datos no está adjunta. – Ricardo

3

Puede probar lo que se publica here por MohammedU. Básicamente, qué usa el comando DBCC REBUILD_LOG. Funcionará según la versión de tu servidor.

Éstos son los pasos (sin detalles):

  1. cambiar el nombre de archivo .mdf existente para .mdf_old
  2. Crear una nueva base de datos con mismo .mdf y el archivo .ldf tan antigua.
  3. Detener el servidor SQL
  4. Renombrar archivos .mdf y .ldf de la nueva db a .mdf_old y .ldf_old
  5. Renombrar .mdf_old a .MDF
  6. de inicio del servidor SQL
  7. Debe ver en db modo sospechoso
  8. Cambie el contexto de la base de datos a Maestro y permita actualizaciones a las tablas del sistema
  9. Establezca la base de datos en el modo de emergencia (recuperación de derivación).
  10. Detener y reiniciar el servidor SQL.
  11. Reconstruye el registro.
  12. Establezca la base de datos en modo de usuario único y ejecute DBCC CHECKDB para validar la coherencia física.
  13. Desactive las actualizaciones de las tablas del sistema.
+1

¿Cómo hago los pasos del 8 al 13? –

1

Si tiene problemas, verifique que el archivo mdf no sea de solo lectura.

0
EXEC sp_attach_single_file_db @dbname = 'DBNAME',@physname = N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\DBNAME_Data.mdf'; 

Lo intenté y funcionó ... Espero que esto ayude.

3

probar este pasos a través de SQL Server Management Studio

  1. Abiertas SSMS e hizo un clic derecho sobre bases de datos.
  2. Seleccione Adjuntar opción
  3. Luego haga clic en agregar para adjuntar archivo MDF.
  4. Seleccione el archivo de la lista y haga clic en OK
  5. Ahora la pantalla muestra el archivo MDF y LDF archivo (No encontrado)
  6. elegir el archivo LDF y haga clic en la opción Quitar.
  7. Después de eliminar el archivo LDF, haga clic en Aceptar.
  8. Archivo MDF conectado correctamente en la lista de bases de datos.
+0

Esto no funciona para mí. ¿Puedes sugerir otra solución? –

+0

aquí hay un excelente artículo sobre [cómo adjuntar mdf sin ldf] (http: //www.sqlserverlogexplorer.com/how-to-attach-mdf-file-without-ldf-file /) –

3

Intente adjuntarlo agregando el archivo MDF al cuadro de diálogo Adjuntar bases de datos. Notará que el diálogo informará el archivo LDF que falta.Siga los pasos como se muestra en la imagen:

enter image description here

+1

En SQL Server 2012 no funcionará. Lo intenté. –

+0

Funciona para mí en 2012 express – Juan

1

Éstos son fragmentos de código para crear archivos .ldf programaticaly

A continuación se presentan 3 métodos.

Método -1

En mi caso tengo mi base de datos en la carpeta DATA.

Usted puede obtener la ruta completa a su base de datos haciendo clic derecho y luego ir a las propiedades continuación, puede copiar la ruta completa a la base de datos

como en mi camino caso es el siguiente.

C: \ Archivos de programa \ Microsoft SQL Server \ MSSQL11.DRIBBLEE \ MSSQL \ DATA

Ahora aquí es el primer método utilizando procedimiento de almacenamiento (sp_attach_single_file_db) y haciéndola pasar argumentos (nombre de la base de datos y la ruta física)

USE [master] 
GO 

EXECUTE sp_attach_single_file_db 
@dbname='AdventureWorksDW_2012', 
@physname=N'C:\ProgramFiles\MicrosoftSQLServer\MSSQL11.DRIBBLEE\MSSQL\DATA\AdventureWorksDW2012_Data.mdf' 

GO 

ejecute el código que después de ejecutar el código vaya a la carpeta de la base de datos donde reside, verá el archivo .ldf creado allí.

Sin embargo obtendrá siguiente mensaje en su

The physical file name "C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\AdventureWorksDW2012_log.ldf" may be incorrect. 
New log file 'C:\Program Files\Microsoft SQL Server\MSSQL11.DRIBBLEE\MSSQL\DATA\AdventureWorksDW_2012_log.ldf' was created. 

Ahora se puede conectar la base de datos y después de instalarla en la base de datos, haga clic derecho en el nombre del servidor en el Explorador de objetos y refrescar.

Método-2

de datos si ésta tiene uno o más archivos de registro que faltan permite utilizar las siguientes

CREATE DATABASE db_namehere ON 
(
    FILENAME=N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\db_namehere.mdf') 

FOR ATTACH_REBUILD_LOG 
GO 

Método-3

Si la base de datos tiene un solo registro error de archivo puede usar este

CREATE DATABASE db_name ON 
(FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\TestDb.mdf') 
FOR ATTACH 
GO 

Además, puede leer en LIBROS en línea para obtener más información.

Cuestiones relacionadas