3

我有一个备份数据库文件(即 test.mdf),但是,我没有 LDF 文件。有人告诉我 SQL Server 2008 R2 可以在没有 LDF 的情况下加载 MDF。

真的吗?

谢谢

4

3 回答 3

5

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;
于 2010-10-19T20:10:30.993 回答
0

另一个选项sp_attach_single_file_db是带有 FOR ATTACH_REBUILD_LOG 选项的CREATE DATABASE命令。

于 2010-10-19T20:16:49.827 回答
0

这对我有用。我使用紧急模式查看数据库:

http://forums.asp.net/t/1903548.aspx

你有两个选择:

  1. 您可以创建一个具有相同名称和物理文件布局的空数据库,关闭服务器,换入要附加的文件以代替空数据库文件,然后启动服务器。数据库应该以可疑模式出现。然后您可以 ALTER DATABASE SET EMERGENCY 将其置于紧急模式,然后运行 ​​DBCC CHECKDB REPAIR_ALLOW_DATA_LOSS。这将从日志中提取尽可能多的数据以使数据库保持一致,但可能必须删除一些数据才能使数据库保持一致。这是最有可能获取最大数据的选项。
  2. 您可以尝试使用 CREATE DATABASE FOR ATTACH_REBUILD_LOG 来查看是否可以将其恢复。如果数据库完全关闭,您可能会成功。如果存在无法回滚的事务,数据库也有可能不一致或损坏。无论如何,您都应该运行 DBCC CHECKDB REPAIR_ALLOW_DATA_LOSS 以使您的数据库保持一致。在这种情况下,SQL Server 不会尝试从日志中挖掘信息。它将忽略日志的内容。如果有正在处理的事务,则不可能回滚,因此需要 ALLOW_DATA_LOSS。

更多内容请尝试参考:

http://blog.sqlauthority.com/2008/07/21/sql-server-fix-error-9004-an-error-occurred-while-processing-the-log-for-database-if-possible-restore-从-备份-如果-a-backup-is-not-available-it-might-be-necessary-to-rebuild-the-log/

于 2014-01-22T08:51:24.663 回答