我有一個備份數據庫文件(即test.mdf),但是,我沒有LDF文件。有人告訴我,SQL Server 2008 R2可以在不使用LDF的情況下加載MDF。SQL Server - 我可以加載沒有LDF文件的MDF而不會丟失數據嗎?
這是真的嗎?
謝謝
我有一個備份數據庫文件(即test.mdf),但是,我沒有LDF文件。有人告訴我,SQL Server 2008 R2可以在不使用LDF的情況下加載MDF。SQL Server - 我可以加載沒有LDF文件的MDF而不會丟失數據嗎?
這是真的嗎?
謝謝
假設數據庫中乾淨利落地分離,你應該能夠使用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;
另一個選項sp_attach_single_file_db
是CREATE DATABASE命令與FOR ATTACH_REBUILD_LOG選項。
這對我有效。我用緊急模式看數據庫:
http://forums.asp.net/t/1903548.aspx
你有兩個選擇:
- 您可以創建具有相同的名稱和物理文件佈局一個空數據庫,關閉服務器,交換你想要的文件 代替空的DB文件,然後啓動服務器。數據庫應該出現可疑模式。然後您可以將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。
欲瞭解更多請儘量參考:
我保證數據庫乾淨地分離。所以你的意思是我不會丟失任何數據?謝謝 – q0987 2010-10-19 20:12:00
不,您可能會丟失數據,具體取決於LDF中的內容 - 事務日誌。 – 2010-10-19 20:17:14
@ q0987:爲了確保沒有數據丟失,SQL Server服務將不得不停止。 – 2010-10-19 20:23:51