bestlong 怕失憶論壇

 

 

搜索
bestlong 怕失憶論壇 論壇 Database - 資料庫 MS SQL Server 如何將SQL 2000/2005 Server資料庫備份檔還原到不同的主 ...
查看: 34812|回復: 4
go

如何將SQL 2000/2005 Server資料庫備份檔還原到不同的主機 [複製鏈接]

Rank: 9Rank: 9Rank: 9

1#
發表於 2007-10-30 15:40 |只看該作者 |倒序瀏覽 |打印
在 SQL2005 下建立一個新的資料庫名為 TestDB
產生相關檔案有 TestDB.mdf 與 TestDB_log.ldf 放置在 D:\MSSQLData 目錄下
而想要還原的資料庫的來源是在另一台SQL2000所備份的
其中備份檔共有一個完整備份的資料檔以及兩個交易紀錄備份檔

然後使用 SQL 命令進行還原作業
  1. RESTORE DATABASE TestDB
  2. FROM disk='D:\backup\TestDB_db_200710280200.BAK'
複製代碼


出現下列錯誤訊息

訊息 3159,層級 16,狀態 1,行 1
資料庫 "Emp" 的記錄結尾尚未備份。若您不想遺失其中的內容,請使用 BACKUP LOG WITH NORECOVERY 備份記錄。亦可使用 RESTORE 陳述式的 WITH REPLACE 或 WITH STOPAT 子句,覆寫記錄的內容。
訊息 3013,層級 16,狀態 1,行 1
RESTORE DATABASE 正在異常結束。
我是雪龍
http://blog.bestlong.idv.tw
http://www.bestlong.idv.tw

Rank: 9Rank: 9Rank: 9

2#
發表於 2007-10-30 16:48 |只看該作者
檢查備份檔是否有效,執行下列SQL指令
  1. restore VerifyOnly
  2. from disk='D:\backup\TestDB_db_200710280200.BAK'
複製代碼
出現下列錯誤訊息
嘗試還原這個備份可能會遭遇儲存空間的問題。後續的訊息將會提供詳細資料。
檔案 "C:\Program Files\Microsoft SQL Server\MSSQL\data\TestDB_Data.MDF" 的目錄查閱失敗,有作業系統錯誤 3(系統找不到指定的路徑。)。
檔案 "C:\Program Files\Microsoft SQL Server\MSSQL\data\TestDB_Log.LDF" 的目錄查閱失敗,有作業系統錯誤 3(系統找不到指定的路徑。)。
檔案 1 上的備份組有效。


可以用SQL確認備份檔的原始狀況
  1. restore FileListOnly
  2. from disk='D:\backup\TestDB_db_200710280200.BAK'
複製代碼
執行結果會顯示備份資料庫所包含的檔案清單,檢視清單中的 LogicalName 與 PysicalName 兩個欄位,可以確定備份來源伺服器的路徑與現在要被還原的資料庫的路徑有差異
所以進行還原作業會有上列錯誤
我是雪龍
http://blog.bestlong.idv.tw
http://www.bestlong.idv.tw

Rank: 9Rank: 9Rank: 9

3#
發表於 2007-10-31 08:09 |只看該作者
因為要復原的伺服器中的 TestDB 資料庫是新建的可以直接覆寫蓋掉
因此透過下列SQL命令可以進行復原
其中有指定 NoRecovery 就表示還要繼續還原其他備份檔,例如差異備份或交易備份
  1. restore DATABASE TestDB
  2. from disk='D:\backup\TestDB_db_200710280200.BAK'
  3. with
  4. move 'TestDB_Data' to 'D:\MSSQLData\TestDB.mdf',
  5. move 'TestDB_Log' to 'D:\MSSQLData\TestDB_log.ldf'
  6. ,NoRecovery
  7. ,Replace
  8. go
複製代碼
繼續還原交易備份檔,但還要繼續還原其他交易備份檔
  1. restore log TestDB
  2. from disk='D:\backup\TestDB_tlog_200710290001.TRN'
  3. with NoRecovery
  4. go
複製代碼
繼續還原交易備份檔,最後一個不再繼續:
  1. restore log TestDB
  2. from disk='D:\backup\TestDB_tlog_200710300001.TRN'
  3. with Recovery
  4. go
複製代碼
若是想直接結束還原狀態,可用下列指令:
  1. -- 切換資料庫的狀態為:ONLINE。
  2. restore DATABASE TestDB
  3. with Recovery
  4. go
複製代碼
我是雪龍
http://blog.bestlong.idv.tw
http://www.bestlong.idv.tw

Rank: 9Rank: 9Rank: 9

4#
發表於 2009-12-8 11:30 |只看該作者
另外一個作法就是先建立 TestDB 資料庫將 MDF 與 LDF 的檔案名稱與路徑都對應到錯誤訊息中顯示的路徑,以本例來說路徑如下:

C:\Program Files\Microsoft SQL Server\MSSQL\data\TestDB_Data.MDF
C:\Program Files\Microsoft SQL Server\MSSQL\data\TestDB_Log.LDF

然後用備份檔進行還原資料庫的程序,應該可以順利復原。

接著卸離 TestDB 資料庫後,就可以用檔案總管將 MDF 與 LDF 移動到新的目錄位置

最後再掛載資料庫進來就可以了。

不過硬碟空間不足的話就不能用此招了。
我是雪龍
http://blog.bestlong.idv.tw
http://www.bestlong.idv.tw

Rank: 9Rank: 9Rank: 9

5#
發表於 2011-3-18 15:55 |只看該作者
在不同的資料庫主機上還原資料庫備份時用了類似下列指令
  1. RESTORE DATABASE [shopdb]
  2.    FROM DISK = 'D:\shopdbbackup\shopdbbackupfilename'
  3.    WITH
  4.      MOVE 'shopdb_Data' TO 'C:\MSSQLData\shopdb_Data.MDF',
  5.      MOVE 'shopdb_Log'  TO 'C:\MSSQLData\shopdb_Log.LDF',
  6.   REPLACE,  STATS = 2;
  7. GO
複製代碼
結果碰到這樣的錯誤訊息

訊息 3132,層級 16,狀態 1,行 1
媒體集有 2 個媒體家族,但是僅提供 1。必須提供所有成員。
訊息 3013,層級 16,狀態 1,行 1
RESTORE DATABASE 正在異常結束。


不要懷疑, 就是備份的媒體檔案不是只有一個, 趕快回去原來備份的主機上找吧.
如果已經刪除的話資料就沒得救了, 因為備份資料會平均分散在每一個媒體, 所以還原時缺一不可喔.
我是雪龍
http://blog.bestlong.idv.tw
http://www.bestlong.idv.tw
‹ 上一主題|下一主題

Archiver|怕失憶論壇

GMT+8, 2024-4-25 07:41 , Processed in 0.015954 second(s), 11 queries .

Powered by Discuz! X1.5

© 2001-2010 Comsenz Inc.