2013-07-29 78 views
8

我有一個bak文件(這是一個SQL服務器的快速2005 mdf文件的備份數據庫文件),我應該獲得MDF文件,以便我可以在它的表上工作,我可以從這個bak文件中獲得原始的MDF文件嗎?我正在使用Visual Studio 2012,是否有必要擁有管理工作室?我試圖將這個bak文件恢復到另一個包含Sql server express management studio 2008的系統中的空數據庫,但它說數據庫不匹配,出了什麼問題?從bak文件恢復原始的MDF文件

回答

5

如果您創建了空白數據庫,要使用備份覆蓋此數據庫,您需要指定WITH REPLACE參數。

此外,您可能必須指定MOVE參數才能將文件放入正確的位置。

你應該能夠很容易地找到在GUI這些選項在做恢復的時候,或者你也可以編寫腳本,這也使這裏使用參考:

How to: Restore a Database to a New Location and Name (Transact-SQL)

+0

謝謝,但我怎麼能通過代碼執行此操作?我應該在哪裏運行鏈接中提供的代碼示例?我應該創建一個SQLCommand對象並運行這些腳本? –

+0

你可以這樣做,或者你可以在SQL管理工作室 – steoleary

11

請記住,恢復數據庫備份文件不會給出原始的MDF(和LDF)文件。獲取原始MDF文件的唯一方法是複製它 您可以在Visual Studio中執行由steoleary建議的T-SQL,在此處查看更多:How to: Run SQL Scripts in Solution Explorer。您也可以在SQL Server管理Studio中執行此操作。

您創建的空白數據庫沒有多大幫助,除非要將備份同步到它。但爲此,您需要第三方工具

首先,執行以下步驟以找出備份中的邏輯文件名。這個例子是存儲在電子名爲TestFull.bak備份:\測試

RESTORE FILELISTONLY 
FROM DISK = 'E:\Test\TestFull.bak' 
GO 

enter image description here

的邏輯名稱應在下一腳本中使用。此外,更新使用的路徑和名稱

RESTORE DATABASE YourDB 
FROM DISK = 'E:\Test\TestFull.bak' 
WITH MOVE 'test1' TO 'E:\test\TestMDFFile.mdf', 
MOVE 'test1_log' TO 'E:\test\TestLDFFile.ldf' 
+0

運行命令,感謝Milena,我已經使用Management Studio獲得了MDF文件,但實際上我應該通過代碼來執行這個操作,即我的用戶應該能夠從bak文件讀取數據,所以我應該能夠通過代碼從bak文件恢復MDF,然後連接到MDF並讀取數據庫,如何在C#代碼中執行此操作?有沒有樣品? –

+0

@Ali_dotNet我不能幫助C#:( –

+0

好吧,你使用另一種語言嗎? –