---测试SQL 2008数据库加密备份与还原[完备+差异备份] /* 1.完整备份test数据库(加密码)*/ Use Test BACKUP DATABASE [test] TO DISK = N'D:/test.bak' WITH NOFORMAT, NOINIT, NAME = N'test-完整 数据库 备份', 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'验证失败。找不到数据库“test”的备份信息。', 16, 1) --end --RESTORE VERIFYONLY FROM DISK = N'D:/test.bak' WITH FILE = @backupSetId, -- NOUNLOAD, NOREWIND , -- PASSWORD = '123456' --检查时也需要输入密码 ------若备份文件正常,则返回,如:文件 1 上的备份集有效。 --GO -------- ---/* 2.差异备份test数据库(加密码)*/ Use Test BACKUP DATABASE [test] TO DISK = N'D:/test_diff1.bak' WITH DIFFERENTIAL, NOFORMAT, NOINIT, NAME = N'test-差异 数据库 备份 differentBackup', SKIP,password='123456', NOREWIND, NOUNLOAD, STATS = 10 /*----,compression (Express Edition 不支持 BACKUP DATABASE WITH COMPRESSION。)*/ ---- /*-- 3. 用加密的完整备份文件还原TEST数据库.由于还有差异备份因此加"NORECOVERY"参数*/ Use master RESTORE DATABASE test FROM DISK = N'D:/test.bak' WITH REPLACE, NORECOVERY,--此参数表明:进行还原开始,可以继续添加需要还原的备份,如差异备份,如果此刻查看SSMS界面,该数据库是一个“正在还原”状态。 --recovery,则表示还原后可正常使用,后不可跟事务日志、差异备份继续还原等操作。 PASSWORD = '123456' --注意输入密码 --select state from sys.databases where name='test' 可以查询出该数据库当前的状态,为1即表示正在还原. GO ------- /*-- 4. 用加密的差异备份文件继续还原TEST数据库(在最后一个完整备份已经还原的基础上进行).*/ Use master RESTORE DATABASE test FROM DISK = N'D:/test_diff1.bak' WITH RECOVERY, --由于后续没有事务日志待还原 PASSWORD = '12346' --注意输入密码 GO /************************PS***************************/ /******************************************************/ --指定还原后的数据库物理文件名称及路径: 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 语句将数据库复制到相同或不同的服务器上,则可能需要使用 MOVE 选项重 新定位数据库文件以避免与现有文件冲突。可以在不同的 MOVE 语句中指定 数据库内的每个逻辑文件. */ --强制还原,加上REPLACE参数,则在现有数据库基础上强制还原。 RESTORE DATABASE MyDataBase FROM DISK = 'd:\MyDataBase.bak' WITH REPLACE, MOVE 'Northwind' TO 'd:\MyDataBase.mdf', MOVE 'Northwind_log' TO 'd:\MyDataBase.ldf'
|
|