请问各位大大,用备份做数据库的完全恢复后原来的日志备份链会不会被打破?也就是原来的日志备份作业还能正常运行吗,还是需要重新配置呢?

解决方案 »

  1.   

    我也觉得原理上应该没问题,但是刚接触sql server,还不懂如何进行测试,兄台有测试过吗?
      

  2.   

    哦,有没有真正测试过的兄弟进来说说?我对sql server的语法还不太了解,只是学了一些原理性的知识
      

  3.   

    刚试了下,作业是需要重新配置的,因为作业不在某个库里,所有的作业都在sql实例下,而完整备份是只针对库,而不是整个实例。
    可以将作业导成脚本,还原后直接利用脚本新建作业!
      

  4.   

    是的,日志(LSN)链为数据库中的每次更改提供一个序列号,还原后就打断了原有的日志链,需要重新完整备份后再日志备份!
      

  5.   


    -- 建测试库ilovemk
    create database ilovemk-- 打开测试库ilovemk
    use ilovemk-- 建测试表
    create table tab1 (id int, de varchar(5))-- 插入1笔记录
    insert into tab1 select 1,'a' -- 返回master库
    use master-- 全备份
    backup database ilovemk to disk='D:\ilovemk.bak' with format,init-- 插入第2笔记录
    insert into ilovemk.dbo.tab1 select 2,'b'-- 日志备份为ilovemk1
    backup log ilovemk to disk='D:\ilovemk1.log' with format,init-- 插入第3笔记录
    insert into ilovemk.dbo.tab1 select 3,'c'-- 日志备份为ilovemk2
    backup log ilovemk to disk='D:\ilovemk2.log' with format,init-- 查看日志备份的LSN, ilovemk1.LastLSN=ilovemk2.FirstLSN
    restore headeronly from disk='D:\ilovemk1.log'
    --> FirstLSN 29000000007400174  LastLSN 29000000015600001restore headeronly from disk='D:\ilovemk2.log'
    --> FirstLSN 29000000015600001  LastLSN 29000000015700001-- 恢复全备份
    restore database ilovemk from disk='D:\ilovemk.bak' with replace-- 回到只有1笔记录的状态
    select * from ilovemk.dbo.tab1id          de
    ----------- -----
    1           a-- 插入第2笔记录
    insert into ilovemk.dbo.tab1 select 2,'b'-- 日志备份为ilovemk11
    backup log ilovemk to disk='D:\ilovemk11.log' with format,init-- 插入第3笔记录
    insert into ilovemk.dbo.tab1 select 3,'c'-- 日志备份为ilovemk22
    backup log ilovemk to disk='D:\ilovemk22.log' with format,init-- 查看日志备份的LSN, ilovemk11.LastLSN=ilovemk22.FirstLSN
    restore headeronly from disk='D:\ilovemk11.log'
    --> FirstLSN 29000000014800001  LastLSN 29000000018300001restore headeronly from disk='D:\ilovemk22.log'
    --> FirstLSN 29000000018300001  LastLSN 29000000018400001--> 结论: 全备份恢复后,日志备份日志链跟原先是不同的.
      

  6.   


    -- 全备份
    backup database ilovemk to disk='D:\ilovemk.bak' with format,init这条语句中的format和init是不是矛盾了,因为format的意思是格式化介质头和覆盖备份集,而init的意思是保留介质头和覆盖备份集,这条语句的执行究竟是按format还是按init?
      

  7.   

    format,init这2个选项同时使用是不冲突的, 其含义详见MSDN.这个不是本帖的讨论主题, 楼主有兴趣可以私信找我喔.