SQL SERVER差異備份還原
阿新 • • 發佈:2020-09-09
本文測試恢復分開的完整備份和差異備份檔案。
完整備份檔案ssms恢復沒有問題,但差異備份恢復始終報錯。以下是微軟幫助文件中示例:
--微軟幫助文件 RESTORE DATABASE AdventureWorks2008R2 FROM DISK = 'Z:\SQLServerBackups\AdventureWorks2008R2.bak' WITH FILE = 6 NORECOVERY; RESTORE DATABASE AdventureWorks2008R2 FROM DISK = 'Z:\SQLServerBackups\AdventureWorks2008R2.bak' WITH FILE = 9 RECOVERY;
WITH FILE = 6 處會報錯(後同),可能是針對同一檔案中包含多個備份情況。但說明了關鍵一點,即:
/* 第1步,還原完整備份,必須使用 WITH NORECOVERY ,不對資料庫執行操作,不回滾事務,使資料庫處於【正在還原...】狀態,
此時資料庫不可使用,但可繼續還原其它檔案; 第2步,還原差異備份,使用 WITH RECOVERY,回滾未提交事務,使資料庫恢復到可使用狀態。 */
瞭解了這一點,即使使用ssms進行差異備份還原操作,也可以正常還原。
另附示例,使用其它資料庫備份,恢復新資料庫到指定檔案位置:
--使用 BACKUP 和 RESTORE 複製資料庫 BACKUP DATABASE AdventureWorks2008R2 TO AdventureWorks2008R2Backups ; RESTORE FILELISTONLY FROM AdventureWorks2008R2Backups ; RESTORE DATABASE TestDB FROM AdventureWorks2008R2Backups WITH MOVE 'AdventureWorks2008R2_Data' TO 'C:\MySQLServer\testdb.mdf', MOVE 'AdventureWorks2008R2_Log' TO 'C:\MySQLServer\testdb.ldf';