我有一个备份数据库文件(即 test.mdf),但是,我没有 LDF 文件。有人告诉我 SQL Server 2008 R2 可以在没有 LDF 的情况下加载 MDF。
真的吗?
谢谢
我有一个备份数据库文件(即 test.mdf),但是,我没有 LDF 文件。有人告诉我 SQL Server 2008 R2 可以在没有 LDF 的情况下加载 MDF。
真的吗?
谢谢
Assuming the database was detached cleanly, you should be able to use sp_attach_single_file_db or the newer CREATE DATABASE...FOR ATTACH syntax.
EXEC sp_attach_single_file_db
@dbname = 'YourDB',
@physname = N'C:\YourFile.mdf';
OR
CREATE DATABASE YourDB
ON (FILENAME = 'c:\YourFile.mdf')
FOR ATTACH_REBUILD_LOG;
另一个选项sp_attach_single_file_db
是带有 FOR ATTACH_REBUILD_LOG 选项的CREATE DATABASE命令。
这对我有用。我使用紧急模式查看数据库:
http://forums.asp.net/t/1903548.aspx
你有两个选择:
- 您可以创建一个具有相同名称和物理文件布局的空数据库,关闭服务器,换入要附加的文件以代替空数据库文件,然后启动服务器。数据库应该以可疑模式出现。然后您可以 ALTER DATABASE SET EMERGENCY 将其置于紧急模式,然后运行 DBCC CHECKDB REPAIR_ALLOW_DATA_LOSS。这将从日志中提取尽可能多的数据以使数据库保持一致,但可能必须删除一些数据才能使数据库保持一致。这是最有可能获取最大数据的选项。
- 您可以尝试使用 CREATE DATABASE FOR ATTACH_REBUILD_LOG 来查看是否可以将其恢复。如果数据库完全关闭,您可能会成功。如果存在无法回滚的事务,数据库也有可能不一致或损坏。无论如何,您都应该运行 DBCC CHECKDB REPAIR_ALLOW_DATA_LOSS 以使您的数据库保持一致。在这种情况下,SQL Server 不会尝试从日志中挖掘信息。它将忽略日志的内容。如果有正在处理的事务,则不可能回滚,因此需要 ALLOW_DATA_LOSS。
更多内容请尝试参考: