/*************************************   差异备份 ********************/
http://expert.csdn.net/Expert/topic/2317/2317894.xml?temp=.8740045
下面的是详细的过程:--清除环境,防止现有的数据影响测试结果
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

解决方案 »

  1.   


    系统中有一个数据库DB1,系统正在使用的过程中,不小心删除了某表T1的数据
    现我可以按照用完整备份文件加日志备份时间点TIME1恢复的方法来恢复该数据库但问题出在该数据库一直还必须在使用中,所以除了你删除了数据的TA表外,其它的
    表的数据你不能只是恢复到错误时间点TIME1处,因为,TIME1以后也有数据变化解决这个问题有两个方法
    1:用LOG EXEPLORE 可以轻松搞定2:先建立一个数据库DB2,将完整备份文件恢复到DB2中,再用DB2中的T1数据来更新
       DB1中的T1数据即可.
    --查看备份信息
    RESTORE FILELISTONLY FROM DISK ='C:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\db1_backup'--还原旧的备份 
    RESTORE DATABASE db2 FROM DISK = 'C:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\db1_backup' with replace,norecovery,
    move 'db1_Data' to 'C:\Program Files\Microsoft SQL Server\MSSQL\data\db2_data.mdf',
     move 'db1_Log' to 'C:\Program Files\Microsoft SQL Server\MSSQL\data\db2_log.ldf' --还原数据日志到时间点
    restore log  db2  from disk='db_log_backup'  with stopat='2003/4/22 9:57'
      

  2.   

    restore database examDB
    from disk='d:\data\15.dat' with nocovery,replace
     restore log examDB
      from disk='d:\log\15.log' with recovery
      

  3.   

    --上面的写错了,进行正确的恢复
    --1.恢复数据库到完全备分时的状态:
    restore database examDB from disk='c:\15.dat'
    with norecovery,replace
    go--2.恢复事物日志:
    restore log examDB from disk='c:\15.log' 
    with recovery
    go
      

  4.   

    --下面是测试--1.新建数据库examDB
    create database examDB
    go--2.完全备分数据库
    backup database examDB to disk='c:\15.dat'
    go--3.备分日志:
    backup log examDB to disk='c:\15.log'
    go--4.在examDB中建一个表table1并加入数据
    use examdb
    go
    create table table1(id int)
    insert into table1 values(1)
    go
    use master
    go--恢复
    --下面是错误的操作
    --1.恢复数据库到完全备分时的状态:
    restore database examDB from disk='c:\15.dat'
    go--2.恢复事物日志:
    restore log examDB from disk='c:\15.log'
    go--接着进行正确的恢复
    --1.恢复数据库到完全备分时的状态:
    restore database examDB from disk='c:\15.dat'
    with norecovery,replace
    go--2.恢复事物日志:
    restore log examDB from disk='c:\15.log' 
    with recovery
    go--删除测试的数据库
    drop database examDB