How to attach a database without an LDF file?
如何在 SQL Server 中附加没有 LDF 文件的数据库?
您可以使用 sp_attach_single_file_db 来附加缺少其日志文件的数据库。
尝试通过将 MDF 文件添加到"附加数据库"对话框来附加它。您会注意到该对话框将报告丢失的 LDF 文件。请按照图片所示的步骤操作:
这里是用于以编程方式创建 .ldf 文件的代码片段
以下是 3 种方法。
方法-1
就我而言,我的数据库位于 DATA 文件夹中。
您可以通过右键单击然后转到属性来获取数据库的完整路径
然后您可以将完整路径复制到数据库
在我的情况下,路径如下。
C:\\\\Program Files\\\\Microsoft SQL Server\\\\MSSQL11.DRIBBLEE\\\\MSSQL\\\\DATA
现在这是第一种方法,使用存储过程(sp_attach_single_file_db)并传递参数(数据库名称和物理路径)
1 2 3 4 5 6 7 8 | 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 |
执行你的代码 执行代码后转到它所在的数据库文件夹,你会看到那里创建的 .ldf 文件。
但是,您会在您的
中收到以下消息
1 2 | 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. |
现在您可以附加数据库,在附加数据库后,在对象资源管理器中右键单击您的服务器名称并刷新。
方法二
如果您的数据库缺少一个或多个日志文件,您可以使用以下
1 2 3 4 5 6 | 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 |
方法3
如果你的数据库只有一个日志文件missig,你可以使用这个
1 2 3 4 | CREATE DATABASE db_name ON ( FILENAME = N'C:\\Program Files\\Microsoft SQL Server\\MSSQL11.MSSQLSERVER\\MSSQL\\DATA\\TestDb.mdf') FOR ATTACH GO |
您可以进一步阅读 BOOKs Online 以获取更多信息。
通过 SQL Server Management Studio 尝试此步骤
您可以尝试 MohammedU 在此处发布的内容。基本上,他使用的是 DBCC REBUILD_LOG 命令。它将根据您的服务器版本起作用。
以下是步骤(不详):
1 | EXEC sp_attach_single_file_db @dbname = 'DBNAME',@physname = N'C:\\Program Files\\Microsoft SQL Server\\MSSQL.1\\MSSQL\\DATA\\DBNAME_Data.mdf'; |
我试过了,它成功了......希望这会有所帮助。
如果遇到问题,请确认 mdf 文件不是只读的。
你可以"随便做"它会抛出一个警告,说它找不到 .ldf,但它仍然会附加 db。