zoukankan      html  css  js  c++  java
  • [轉]SQL文件组备份和还原(二)

    FROM : http://blog.sina.com.cn/s/blog_59e866610100dnku.html

    上次关于SQL文件组的备份和还原似乎意犹未尽,我总觉得好像欠些什么。做了尾日志备份,是为了能将数据库还原到故障发生时的那个点。但如果没有发生故障,而是因为误操作,想还原到前面的一个点呢,当然,同样要先做尾日志备份,否则还原会出错,但是还原的时候不要还原尾日志了。

    我建了一个测试数据库test,两个文件组,primary和FG1,FG1为默认文件组,

    (1)先在FG1建了一个表grade,然后对两个文件组都做了一个完整备份(基备份)。

    (2)然后对表grade插入一些数据,再做了一个事务日志备份。

    (3)又在FG1建了一个表mark。

    (4)对两个文件组都做了差异备份。

    (5)对表mark插入10条记录。

    (6)做事务日志备份。

    (7)对表再插入10条记录。

    (8)做事务日志备份。

    备份信息如下图:

    SQL文件组备份和还原(二)

    现在我想将数据库还原到第(6)步时的状态。

    use master
    go
    restore database test
    filegroup='primary'
    from myback1,myback2
    with file=1,norecovery
    go
    restore database test
    filegroup='FG1'
    from myback1,myback2
    with file=2,norecovery
    go
    restore database test
    filegroup='primary'
    from myback1,myback2
    with file=4,norecovery
    go
    restore database test
    filegroup='FG1'
    from myback1,myback2
    with file=5,norecovery
    go
    restore log test
    from myback1,myback2
    with file=6,recovery
    go

    这一步我测试成功。

    有一点要注意的是:不管你要备份哪个文件组,主文件组primary一定要先备份,不然以后在备份其他文件组的差异备份就会报错,提示基备份不存在。因为主文件组包含主数据文件,用于存储数据库的启动信息和元数据,包括系统表和对象。

    在上面的测试当中,在完整文件组备份和差异备份之间还有一次事务日志备份,在还原的时候这个事务日志并没有还原。但是,但是如果在那次事务日志备份之后没有对主文件组进行差异备份,而仅仅对文件组FG1进行了差异备份,那么在还原的时候这个日志一定要还原,而且是在完整文件组备份还原后就得还原(按顺序进行),否则在还原后面的事务日志时就会提示你这个日志太晚,不能应用于数据库的错误信息。

    还原变成如下:

    use master
    go
    restore database test
    filegroup='primary'
    from myback1,myback2
    with file=1,norecovery
    go
    restore database test
    filegroup='FG1'
    from myback1,myback2
    with file=2,norecovery
    go
    restore log test
    from myback1,myback2
    with file=3,norecovery
    go
    restore database test
    filegroup='FG1'
    from myback1,myback2
    with file=5,norecovery
    go
    restore log test
    from myback1,myback2
    with file=6,recovery
    go

    所以在还原文件或文件组的时候,还原完最近的差异备份后,事务日志一定要紧接着还原,如果完整备份之后没有再进行差异备份,那么还原完完整备份后,事务日志一定也要欢原。

  • 相关阅读:
    Windows7共享设置
    13-运算符
    13-数据类型转换
    06-移动web之flex布局
    09-sass
    08-less预处理器
    移动端必须掌握知识点
    11-JS变量
    10-响应式
    07-rem
  • 原文地址:https://www.cnblogs.com/Athrun/p/2131774.html
Copyright © 2011-2022 走看看