1,简单、完整模式我都明白,一个是不允许恢复到某一个时点一个是允许,这么说虽然简单点,但是应该没有问题2,关于  大容量日志记录恢复 这个我看了联机丛书也从网络上找了资料可是还没有明白,
   不明白之处有一下几点        一,  大容量日志记录恢复   到底可以不可以恢复到某一时点(不含特殊例外)
   二,  联机丛书上说的“如果日志损坏,或者自最新的日志备份后发生了大容量操作,则必须重做自上次备份后所做的更改”
      是什么意思, 是不是说 如果发生了所谓的大容量操作就无法回复到过往的某一个时点,没有发生所谓的 大容量操 就可以恢复到某一个时点
      还是正好相反,     哪位高手能用比较简单生动的话语告知一下,谢谢了,我是新手

解决方案 »

  1.   

    如果没有大容量复制操作,那么大容量日志记录恢复模型和完全恢复模型是一样的,当进行了大容量复制操作后,再备份日志,那么就不能在这个日志备份集中使用即时点还原(完全恢复模型则可以),这正是与完全恢复模型不同的地方,正因为如此,它备份日志时所需的空间不会多余完全恢复模型下所用的空间。
    大容量复制操作:
    SELECT INTO。
    大容量装载操作(bcp 和 BULK INSERT)。
    CREATE INDEX(包括索引视图)。
    text 和 image 操作(WRITETEXT 和 UPDATETEXT)。 
      

  2.   

    我会了,哈哈,解决方式如下
    -- 数据还原到指定时间点的处理示例
    -- 创建测试数据库
    create database db   
    gobackup database db to disk='c:\db.bak' with format
    go--创建测试表
    create table db.dbo.TB_test(id int)
    insert into db.dbo.tb_test values (3)
    insert into db.dbo.tb_test values (5)
    -- 延时1秒钟,再进行后面的操作(这是由于sql server 的时间精度最大为百分之三秒,不延时的话,可能会导致还原到时间点的操作失败)
    waitfor delay '00:00:03'
    go
    -- 假设我们现在误操作删除了db.dbo.tb_test这个表 select * from db.dbo.tb_test  
    --drop table db.dbo.tb_testdelete from db.dbo.tb_test where id=5
    -- 保存删除表的时间,这个时间其实你是可以知道的,比如现实操作中你不小心删除某个表的时间
    select dt=getdate() into #
    go
    -- 进行一个所谓的大数据量操作,看看能否执行回滚到大数据量之前的操作
    create unique clustered index i_temp_number
    on db.dbo.tb_test(id)
    gobackup log db to disk ='c:\db_log.bak' with format
    gorestore database db from disk='c:\db.bak' with replace,norecovery
    godeclare @dt datetime
    select @dt=dateadd(ms,-20,dt) from # --获取比表被删除时间略早的时间
    restore log db from disk='c:\db_log.bak' with recovery,stopat=@dt
    go
    ---------------------------------------------
    -- 执行到这里就发生了如下提示的错误服务器: 消息 4327,级别 16,状态 1,行 3
    此备份集中的日志包含最小日志记录更改。禁止进行时点恢复。RESTORE 将前滚到日志的结尾,而不恢复数据库。
    已处理 16 页,这些页属于数据库 'db' 的文件 'db'(位于文件 1 上)。
    已处理 2 页,这些页属于数据库 'db' 的文件 'db_log'(位于文件 1 上)。
    RESTORE LOG 操作成功地处理了 18 页,花费了 0.048 秒(3.050 MB/秒)。此点证明:
    一旦执行了类似创建索引的所谓大容量数据操作,就无法进行时点恢复了,
    哪怕是你要恢复的时点是进行大容量数据操作之前
    select * from db.dbo.tb_test
    go-- 删除测试数据库 和 临时表
    DROP DATABASE Db 
    drop table #