2010年10月2日 星期六

SQL 2008 Recovery 5 - piecemeal recovery

-- 1. 使用 lab\mod03\PiecemealBackup.sql 建立 AdventureWorksTest 資料庫
-- 2. 將static_data filegroup 設定為read-only (非課本上有的動作)
-- 3. 新增C:\AWBackups
-- 4. 根據L3-26.sql繼續進行

--備份讀寫的檔案群組
-- 注意 read_write_filegroups 參數
backup database AdventureworksTest read_write_filegroups to disk ='c:\AWBackups\AdventureWorksTest_Dynamic_Data.bak'

--查詢資訊
--會發現AW_StaticData的BackupSzieInBytes = 0, isPresent =0
restore filelistonly from disk =
'c:\AWBackups\AdventureWorksTest_Dynamic_Data.bak'

--只備份 static_data的檔案群組
backup database AdventureworksTest filegroup='static_data' to disk ='c:\AWBackups\AdventureWorksTest_Static_Data.bak'

--查詢資訊
--除了 AW_StaticData有備份外 其他都沒有
restore filelistonly from disk =
'c:\AWBackups\AdventureWorksTest_Static_Data.bak'


--修改資料
--注意 , 我們只針對filegroup備份,沒有完整備份
--這個的修改資料會存在 tail_log中
use AdventureWorksTest
update customer set firstname =null


--按lab將 sql server服務停止,並改名
--將 AW_DynamicData.ndf 改名
--將 AW_StaticData.ndf 改名

--啟動後,資料庫無法使用

--備份 tail-log,資料庫成為 restoring狀態
backup log AdventureWorksTest to disk ='c:\AWBackups\AdventureWorksTest_Active_Log.bak' with no_truncate,norecovery

--只restore dynamic_data檔案群組,所以需設定 with partial
restore database AdventureWorksTest filegroup='dynamic_data' from disk ='c:\AWBackups\AdventureWorksTest_Dynamic_Data.bak' with partial,norecovery

--將最後的 log restore回去
restore log AdventureWorksTest from disk ='c:\AWBackups\AdventureWorksTest_Active_log.bak' with recovery

--此時 Customer資料表可看,但 State資料表不可看


--將 static_data檔案群組 restore
restore database AdventureWorksTest filegroup='STATIC_DATA' from disk='c:\AWBackups\AdventureWorksTest_Static_Data.bak' with recovery

--將 log加回
--這部分會失敗,因為STATIC_DATA本來就是唯獨,所以不會有tail-log需要roll forward
restore log AdventureWorksTest from disk ='c:\AWBackups\AdventureWorksTest_Active_Log.bak' with recovery

--全都可以看了

沒有留言:

張貼留言