---測試SQL 2008數(shù)據(jù)庫加密備份與還原[完備+差異備份] /* 1.完整備份test數(shù)據(jù)庫(加密碼)*/ Use Test BACKUP DATABASE [test] TO DISK = N'D:/test.bak' WITH NOFORMAT, NOINIT, NAME = N'test-完整 數(shù)據(jù)庫 備份', SKIP, NOREWIND, NOUNLOAD, STATS = 10 , PASSWORD = '123456' --密碼,很重要 /*----,compression (Express Edition 不支持 BACKUP DATABASE WITH COMPRESSION。)*/ GO ------- --/*--對該完整備份的備份文件進行檢查*/ --Use Test --declare @backupSetId as int --select @backupSetId = position from msdb..backupset -- where database_name=N'test' and backup_set_id=(select max(backup_set_id) from --msdb..backupset where database_name=N'test' ) --if @backupSetId is null --begin -- raiserror(N'驗證失敗。找不到數(shù)據(jù)庫“test”的備份信息。', 16, 1) --end --RESTORE VERIFYONLY FROM DISK = N'D:/test.bak' WITH FILE = @backupSetId, -- NOUNLOAD, NOREWIND , -- PASSWORD = '123456' --檢查時也需要輸入密碼 ------若備份文件正常,則返回,如:文件 1 上的備份集有效。 --GO -------- ---/* 2.差異備份test數(shù)據(jù)庫(加密碼)*/ Use Test BACKUP DATABASE [test] TO DISK = N'D:/test_diff1.bak' WITH DIFFERENTIAL, NOFORMAT, NOINIT, NAME = N'test-差異 數(shù)據(jù)庫 備份 differentBackup', SKIP,password='123456', NOREWIND, NOUNLOAD, STATS = 10 /*----,compression (Express Edition 不支持 BACKUP DATABASE WITH COMPRESSION。)*/ ---- /*-- 3. 用加密的完整備份文件還原TEST數(shù)據(jù)庫.由于還有差異備份因此加"NORECOVERY"參數(shù)*/ Use master RESTORE DATABASE test FROM DISK = N'D:/test.bak' WITH REPLACE, NORECOVERY,--此參數(shù)表明:進行還原開始,可以繼續(xù)添加需要還原的備份,如差異備份,如果此刻查看SSMS界面,該數(shù)據(jù)庫是一個“正在還原”狀態(tài)。 --recovery,則表示還原后可正常使用,后不可跟事務日志、差異備份繼續(xù)還原等操作。 PASSWORD = '123456' --注意輸入密碼 --select state from sys.databases where name='test' 可以查詢出該數(shù)據(jù)庫當前的狀態(tài),為1即表示正在還原. GO ------- /*-- 4. 用加密的差異備份文件繼續(xù)還原TEST數(shù)據(jù)庫(在最后一個完整備份已經(jīng)還原的基礎(chǔ)上進行).*/ Use master RESTORE DATABASE test FROM DISK = N'D:/test_diff1.bak' WITH RECOVERY, --由于后續(xù)沒有事務日志待還原 PASSWORD = '12346' --注意輸入密碼 GO /************************PS***************************/ /******************************************************/ --指定還原后的數(shù)據(jù)庫物理文件名稱及路徑: RESTORE DATABASE MyDataBase FROM DISK = 'd:\Northwind.bak' WITH MOVE 'Northwind' TO 'd:\MyDataBase .mdf', MOVE 'Northwind_log' TO 'd:\MyDataBase .ldf' /* MOVE 'logical_file_name' TO 'operating_system_file_name' 指定應將給定的 logical_file_name 移到 operating_system_file_name。 默認情況下,logical_file_name 將還原到其原始位置。如果使用 RESTORE 語句將數(shù)據(jù)庫復制到相同或不同的服務器上,則可能需要使用 MOVE 選項重 新定位數(shù)據(jù)庫文件以避免與現(xiàn)有文件沖突??梢栽诓煌?MOVE 語句中指定 數(shù)據(jù)庫內(nèi)的每個邏輯文件. */ --強制還原,加上REPLACE參數(shù),則在現(xiàn)有數(shù)據(jù)庫基礎(chǔ)上強制還原。 RESTORE DATABASE MyDataBase FROM DISK = 'd:\MyDataBase.bak' WITH REPLACE, MOVE 'Northwind' TO 'd:\MyDataBase.mdf', MOVE 'Northwind_log' TO 'd:\MyDataBase.ldf'
|
|