2010年9月2日 星期四

【SQL】將資料庫備份檔(.bak檔)還原到不同的主機為資料庫檔(.mdf檔)

將伺服器的.bak紀錄檔備份回家後,利用還原機制,還原為.mdf資料庫檔的方法。


問題
要還原的資料庫叫NPUST.mdf 欲還原的bak檔為NPUST_backup_200812060300.bak 存在C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\NPUST_backup_200812060300.bak
設要建立一個新的資料庫叫NPUST或用從伺服器備份來的NPUST舊檔 要用最新的bak檔去覆蓋。一般我們會直接在 資料庫右鍵>工作>還原>資料庫 然後在來源裝置選擇備份媒體>檔案 然後去瀏覽加入.bak檔 可是使用伺服器的bak檔做還原時會出現...

System.Data.SqlClient.SqlError: 備份組包含現有的 'NPUST' 資料庫以外的資料庫備份。 (Microsoft.SqlServer.Express.Smo)

System.Data.SqlClient.SqlError: 資料庫 "NPUST" 的記錄結尾尚未備份。若您不想遺失其中的內容,請使用 BACKUP LOG WITH NORECOVERY 備份記錄。亦可使用 RESTORE 陳述式的 WITH REPLACE 或 WITH STOPAT 子句,覆寫記錄的內容。 (Microsoft.SqlServer.Express.Smo)

解決
上圖鍵入的程式碼


restore DATABASE NPUST
from disk='C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\NPUST_backup_200812060300.bak'
with
move 'NPUST' to 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\NPUST.mdf',
move 'NPUST_Log' to 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\NPUST_log.ldf'
,NoRecovery
,Replace
go
※記得檔名與路徑更換為你需要的。

有顯示已處理的訊息後

像圖一樣,再做一次正常還原手續...

這樣就可以正確的完成還原手續的。
參考資料。

沒有留言:

張貼留言