2012-11-15 47 views
11

我沒有做過多的SQL,但對於這個問題我還是很新的,所以請原諒可能是一個基本問題。從另一臺機器上的.bak文件恢復數據庫

我被要求研究創建SQL作業來備份我們的數據庫,將.baks存儲在另一臺機器上,然後將它們還原到第二臺服務器。我一直在做一些研究和玩SSMS,並將數據庫備份到我的個人計算機上,方法是設置共享並將備份作業運行到共享位置。我現在正試圖通過恢復.bak文件來創建一個新的數據庫(在我備份的同一臺服務器上)(但給了數據庫我試圖創建一個新的名稱,而不是),但是我無法指定從共享中恢復它,就像我在備份時一樣/我無法找到如何指定其他網絡位置,並在我嘗試查找文件時瀏覽服務器的C驅動器。

現在,我只是使用內置的嚮導來嘗試實現這一點(打開SSMS - >連接到服務器 - >右鍵單擊數據庫 - >恢復數據庫,然後選擇從設備並瀏覽以找到文件)。

這不是最後的過程,只是我試圖去掌握它是如何工作的。正如我所說的,這個想法是最終有一個計劃的工作,將數據庫從server1備份到.bak(比如我的個人計算機),然後將其恢復到server2上的數據庫(不同的網絡,不同的城市) ,有一系列的SQL命令,而不是每次都使用嚮導(有幾個DB最終需要備份)。

我很抱歉,可能是相當困難和複雜的問題 - 基本上,我需要知道的是我可以/如何在不同的機器上從.bak恢復SSMS中的數據庫? 非常感謝

+1

[將SQL Server中的數據庫導入.bak文件](http://stackoverflow.com/questions/1 535914/import-bak-file-to-a-database-in-sql-server) –

+0

詳細的博客:http://sforsuresh.in/import-bak-file-microsoft-sql-server-2012/ –

回答

30

你可以使用類似下面的腳本。它從文件系統恢復數據庫,並用名稱「MyDB」覆蓋現有數據庫,並將文件移動到過程中所選的新位置。

 
RESTORE DATABASE 
    MyDB 
FROM DISK = '\\MyShare\MyBackup.bak' 
WITH 
    MOVE 'DataFile' TO 'D:\myNewDBLocation\DataFile.mdf', 
    MOVE 'LogFile' TO 'E:\\myNewDBLocation\LogFile.ldf' 
, REPLACE 

你可以找出llogical文件的文件名(在上面,這些都是通過運行以下稱爲DataFileLogFile:有關各種選項和參數

 
RESTORE FILELISTONLY 
FROM DISK = '\\MyShare\MyBackup.bak' 

其他信息:

RESTORE (Transact-SQL)

+0

感謝迅速的答覆。幾個問題,1)什麼是DataFile和LogFiles?如果將DataBase恢復到同一個服務器/位置(就在我開始處理它時,我真的不想訪問第二臺服務器,除非我真的需要),它們仍然需要移動嗎? 2)我試圖恢復, RESTORE DATABASE MyDB FROM DISK ='\\ MyShare \ MyDir \ backup.bak WITH REPLACE' 但是出現錯誤: 「媒體集有2個媒體系列,但只有1個所有成員都必須提供。「 我不能聲稱理解,任何幫助,非常感謝。 – cprlkleg

+0

數據文件是包含實際數據的文件。 Logifle是事務日誌,就像事務的日誌文件,可用於在發生崩潰時將數據恢復到特定時間點。 嘗試運行RESTORE FILELISTONLY命令以確定數據庫實際使用哪些文件。 是的,當將數據庫恢復到同一臺服務器時,您將需要移動這些文件。否則,新數據庫將嘗試使用與第一個數據庫相同的文件,這是不可能的。 – SchmitzIT

+1

非常感謝。我現在正在運行:-) 會upvote,但還不能。 – cprlkleg

相關問題