SQL Server - 我可以在没有丢失数据的情况下加载没有LDF文件的MDF吗?

时间:2010-10-19 19:44:16

标签: sql-server sql-server-2008-r2

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

这是真的吗?

谢谢

3 个答案:

答案 0 :(得分:5)

假设数据库干净利落,您应该能够使用sp_attach_single_file_db或更新的CREATE DATABASE...FOR ATTACH语法。

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;

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

  

您有两种选择:

     
      
  1. 您可以使用相同的名称和物理文件布局创建一个空数据库,关闭服务器,交换您想要的文件   附加空DB文件,然后启动服务器。该   数据库应该以可疑模式出现。然后你可以ALTER DATABASE    SET EMERGENCY将其置于紧急模式,然后运行DBCC   CHECKDB REPAIR_ALLOW_DATA_LOSS。这将获取尽可能多的数据   可能在日志之外使数据库保持一致,但可能有   删除一些数据以使数据库保持一致。这是   最有可能获得最大数据的选项。
  2.   
  3. 您可以尝试使用CREATE DATABASE FOR ATTACH_REBUILD_LOG查看是否会将其恢复。如果数据库干净利落   下来,你可能会成功。还有机会   如果有交易,数据库将不一致或损坏   无法回滚。你应该在任何情况下运行DBCC   CHECKDB REPAIR_ALLOW_DATA_LOSS使数据库保持一致。在   此事件,SQL Server将不会尝试从中挖掘信息   日志。它将忽略日志的内容。如果有的话   进程中的事务没有回滚是可能的,所以   ALLOW_DATA_LOSS将是必需的。
  4.         

    如需更多信息,请尝试参考:

         

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