--清除环境,防止现有的数据影响测试结果
exec master..xp_cmdshell 'del c:/text.bak'
if exists(select * from master..sysdatabases where name='test')
drop database test
go
--创建数据库
create database test
go
--打开创建的数据
use test
go
--创建测试表
create table t(a int)
--切换回master数据库
use master
go
--插入数据1
insert into test..t select 1
go
--然后进行一次完整备份
backup database test to disk='c:/test.bak'
go
--插入数据2
insert into test..t select 2
go
--再进行一次完整备份
backup database test to disk='c:/test.bak'
go
--插入3,4
insert into test..t select 3
insert into test..t select 4
go
--差异备份:
backup database test to disk='c:/test.bak' with differential
--删除数据库
drop database test
--还原数据库和差异数据库备份
--还原完整备份
restore database test from disk='c:/test.bak' with file=2,norecovery
--还原差异备份的内容
restore database test from disk='c:/test.bak' with file=3,recovery
--显示恢复后的数据
select * from test..t
注意下面的语句要放在一起执行 不然一条执行的话 数据库会显示为灰色
--还原完整备份
restore database test from disk='c:/test.bak' with file=2,norecovery
--还原差异备份的内容
restore database test from disk='c:/test.bak' with file=3,recovery
--显示恢复后的数据
FILE的理解
标识要还原的备份集。例如,file_number 为 1 表示备份媒体上的第一个备份集,file_number 为 2 表示第二个备份集。
select backup_start_date as 备份时间,position as 备份号,
case type when 'D' then '完整备份' when 'I' then '差异备份' end as 备份类型
from msdb..backupset where database_name='test'
and media_set_id in
(select distinct media_set_id from msdb..backupmediafamily where physical_device_name='c:/test.bak')
order by position