积极答复者
restore database的怪异问题

问题
-
今天在做每月的备份策略检查的过程中发现一个很怪的问题.
首先,我使用如下语句恢复最近的一次全库备份:
restore database ProductCenter
from
disk = 'E:\productCenter\ProductCenter_backup_201002270300.bak'with move 'ProductCenter' to 'D:\SQLDATA\ProductCenter.mdf',
move 'ProductCenter_log' to 'E:\sqldata\ProductCenter_log.LDF', norecovery,replace
大家注意我带了replace参数,因为该sql server 2005实例上有一个同名测试数据库,起初我没有带replace参数,但系统不让我恢复,因此我加上了replace参数.恢复结果:成功.
接下来我恢复今天凌晨的差异备份,结果报LSN太老,无法恢复差异备份.我以为是我的本分策略出问题了,因此继续使用去掉了replace参数的代码重新恢复全库:
restore database ProductCenter
from
disk = 'E:\productCenter\ProductCenter_backup_201002270300.bak'with move 'ProductCenter' to 'D:\SQLDATA\ProductCenter.mdf',
move 'ProductCenter_log' to 'E:\sqldata\ProductCenter_log.LDF', norecovery
接着再恢复差异备份,嘿,这次成功了.
于是我又把replace参数加上去,第三次恢复了下全库:
restore database ProductCenter
from
disk = 'E:\productCenter\ProductCenter_backup_201002270300.bak'with move 'ProductCenter' to 'D:\SQLDATA\ProductCenter.mdf',
move 'ProductCenter_log' to 'E:\sqldata\ProductCenter_log.LDF', norecovery,replace
等恢复好了全库备份,接着再恢复差异,这次又成功了.真是晕.
我查了下replace参数的含义:
指定即使存在另一个具有相同名称的数据库,SQL Server 也应该创建指定的数据库及其相关文件。
没有看到很特别的地方. 因此对第一次使用replace恢复全库后无法继续恢复差异的问题感到很困惑.不知道有哪位能否指点下,谢谢!
答案
-
REPLACE 選項會覆寫還原通常會執行的數項重要安全檢查。會覆寫的檢查如下:
- 使用從其他資料庫建立的備份來還原現有資料庫。
使用 REPLACE 選項,即使指定的資料庫名稱與備份組中所記錄的資料庫名稱不同,還原仍可讓您以備份組中的任何資料庫覆寫現有的資料庫。這可能會導致意外將資料庫覆寫成不同資料庫。
- 使用完整或大量記錄復原模式來還原資料庫,而這兩種模式都未取得結尾記錄備份也未使用 STOPAT 選項。
使用 REPLACE 選項,您可能會遺失已認可的記錄,因為最近寫入的記錄尚未被備份。
- 覆寫到錯誤類型的現有檔案 (例如,.xls 檔案) 或覆寫到其他資料庫 (目前不在線上) 正在使用的檔案。
使用 REPLACE 選項,可能會因為覆寫這類現有檔案,而遺失任意資料 (還原的資料庫是完整的)。
move--這是還原到指定的文件夾下
參照MSDN,看一下參照說明和例子
http://msdn.microsoft.com/zh-tw/library/ms186858%28SQL.90%29.aspx
ROY WU(吳熹 )- 已标记为答案 中國風MVP, Moderator 2010年3月5日 2:14
- 使用從其他資料庫建立的備份來還原現有資料庫。
全部回复
-
REPLACE 選項會覆寫還原通常會執行的數項重要安全檢查。會覆寫的檢查如下:
- 使用從其他資料庫建立的備份來還原現有資料庫。
使用 REPLACE 選項,即使指定的資料庫名稱與備份組中所記錄的資料庫名稱不同,還原仍可讓您以備份組中的任何資料庫覆寫現有的資料庫。這可能會導致意外將資料庫覆寫成不同資料庫。
- 使用完整或大量記錄復原模式來還原資料庫,而這兩種模式都未取得結尾記錄備份也未使用 STOPAT 選項。
使用 REPLACE 選項,您可能會遺失已認可的記錄,因為最近寫入的記錄尚未被備份。
- 覆寫到錯誤類型的現有檔案 (例如,.xls 檔案) 或覆寫到其他資料庫 (目前不在線上) 正在使用的檔案。
使用 REPLACE 選項,可能會因為覆寫這類現有檔案,而遺失任意資料 (還原的資料庫是完整的)。
move--這是還原到指定的文件夾下
參照MSDN,看一下參照說明和例子
http://msdn.microsoft.com/zh-tw/library/ms186858%28SQL.90%29.aspx
ROY WU(吳熹 )- 已标记为答案 中國風MVP, Moderator 2010年3月5日 2:14
- 使用從其他資料庫建立的備份來還原現有資料庫。