SQL2000中用backup 備份資料庫但在用restore命令恢複時,用只備份一次的bak檔案恢複可以,但如果是儲存的幾次備份資料的bak檔案則出錯,為什麼會出錯?怎麼解決?
問題補充:我的備份語句,backup database test to disk='f:\1.bak'
在查詢分析器中執行一次成功,1.bak為1M,再執行一次,1.bak變為2M,
我用 restore database test from disk='f:\1.bak'還原時
系統提示:
伺服器: 訊息 3201,層級 16,狀態 2,行 1
無法開啟備份裝置 'f:\1.bak'。裝置出現錯誤或裝置離線。詳細資料請參閱 SQL Server 錯誤記錄檔。
伺服器: 訊息 3013,層級 16,狀態 1,行 1
RESTORE DATABASE 操作異常終止。
請問這是什麼原因?
首先確保你在備份的時候沒有使用with Format或with init對現有備份檔案進行覆蓋操作。
對於一個備份檔案有多個備份組的情況,在還原的時候沒有指定還原哪個備份組,預設是還原最早的備份組。
在還原之前,使用如下命令查看備份組情況
restore headeronly from disk='備份的完整路徑'
結果集中Postion就表示的備份組的備份先後順序,一般後備份的postion的值比較的。
這時候在restore命令裡加上with file=檔案號(就是postion的值),就還原相應的備份組了。
比如還原postion為2的備份組
restore database 資料庫名 from disk='備份的完整路徑' with file=2 --資料庫複寫還原模板(1)
RESTORE DATABASE 資料庫名
FROM DISK='***.dmp' --dump檔案路徑
WITH MOVE '資料庫名_Data' TO '***.mdf', --待恢複資料庫的mdf檔案路徑
MOVE '資料庫名_Log' TO '***.ldf' --待恢複資料庫的ldf檔案路徑
--資料庫複寫還原模板(2)
RESTORE DATABASE 資料庫名
FROM DISK='***.DMP'
--查看裝置的邏輯檔案名稱
RESTORE FILELISTONLY FROM DISK='***.DMP'
--備份資料庫到裝置
BACKUP DATABASE 資料庫名
TO DISK='***.DMP' --帶備份的資料庫dump檔案路徑
--清掉資料庫日誌
DUMP TRAN 資料庫名 WITH NO_LOG