---測試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)還原的基礎上進行).*/
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ù)庫內的每個邏輯文件. */
--強制還原,加上REPLACE參數(shù),則在現(xiàn)有數(shù)據(jù)庫基礎上強制還原。
RESTORE DATABASE MyDataBase
FROM DISK = 'd:\MyDataBase.bak'
WITH REPLACE,
MOVE 'Northwind' TO 'd:\MyDataBase.mdf',
MOVE 'Northwind_log' TO 'd:\MyDataBase.ldf'