博客
关于我
SQL Server 备份和还原全攻略, 完全备份,差异备份,增量备份,事务日志备份【入门】
阅读量:648 次
发布时间:2019-03-15

本文共 1532 字,大约阅读时间需要 5 分钟。

SQL Server 备份与还原指南

知识点

完全备份

完全备份是将所有选中文件夹的当前状态备份,无论文件是否处于存档状态。备份完成后会清除文件的存档属性。

差异备份

差异备份仅备份自上次完全备份以来发生变化的文件。备份过程不清除文件的存档属性,意味着备份后的文件仍然保留存档属性。

增量备份

增量备份备份自上次备份(无论是完全备份、差异备份还是事务日志备份)以来发生变化的文件。与差异备份不同,增量备份会清除文件的存档属性。

事务日志备份

在进行事务日志备份之前,需要先执行一次数据库的完全备份。如果数据库的恢复模式设置为FULLbulk logged,才能进行事务日志备份。如果数据库设置为SIMPLE恢复模式,无法使用事务日志备份。

部分备份

部分备份是指定文件组进行备份。仅在恢复模式为SIMPLE的情况下,才能对只读文件组执行文件组备份。还原时需要确保日志备份序列从数据库备份或部分备份的结尾开始。

文件备份

文件备份是指对指定的文件或文件组中的所有内容进行备份,不依赖文件的存档属性。

日志链

日志链是指连续的日志备份序列。一旦在恢复模式从SIMPLE切换到FULLbulk logged,就会开始一个新的日志链。还原时,可以从任何一个完整数据库备份开始还原,加上该日志链中的后续日志备份。

背景示例

某站点在星期天晚上执行完全备份。每天白天每隔4小时执行一次事务日志备份。每晚进行差异备份。假设某天某数据磁盘在上午9:12出现故障时,应采取以下还原步骤:

  • 备份当前事务日志。
  • 还原从星期天晚上的完全备份。
  • 还原从星期三晚上的差异备份,将数据库前滚到星期三晚上。
  • 还原从早上4点到8点的事务日志备份,将数据库前滚到早上8点。
  • 还原故障后的日志备份,将数据库前滚到故障发生的时间。
  • 还原步骤

    测试环境准备

    TestBackup数据库中:

  • 创建表Table1,执行一次完全备份TestBackupDB-full.bak
  • 创建表Table2,执行一次差异备份TestBackupDB-diff.bak
  • 创建表Table3,执行一次事务日志备份TestBackupDB-log.bak(依据数据库恢复模式判断是否可用)。
  • 创建TestBackup2数据库用于还原测试。

    还原说明

  • 完全备份还原

    使用RESTORE WITH NORECOVERY选项还原TestBackupDB-full.bak。还原完成后,数据库状态如图6所示。

  • 差异备份还原

    使用同样的方法还原TestBackupDB-diff.bak。还原完成后,数据库状态仍与完整备份相同。

  • 事务日志备份还原

    使用RESTORE WITH RECOVERY选项还原TestBackupDB-log.bak。还原完成后,TestBackup2数据库状态如图9所示。

  • 还原示例

    -- 还原完整备份RESTORE DATABASE Test FROM DISK='G:\Test.bak' WITH REPLACE, NORECOVERY-- 还原差异备份RESTORE DATABASE Test FROM DISK='G:\Test_Two_Dif.bak' WITH RECOVERYGO

    注意事项

    • 在进行事务日志备份还原时,必须确保恢复状态为RECOVERY
    • 如果数据库设置为SIMPLE恢复模式,事务日志备份不可用。

    升级

    格式扩展

    实际应用中,除mdfldf文件外,可能还有多个ndf文件。还原操作可以通过修改目标文件名为这些额外文件来完成。

    解决段故

    在创建分区文件组和文件时,可能会出现如图10所示的错误。解决方法包括:

  • 重启数据库服务。
  • 将数据库的访问限制设置为SINGLE
  • 转载地址:http://vujmz.baihongyu.com/

    你可能感兴趣的文章
    python 加密算法及其相关模块的学习(hashlib,RSA,random,string,math)
    查看>>
    JavaSE总结
    查看>>
    手动造轮子——基于.NetCore的RPC框架DotNetCoreRpc
    查看>>
    Python IO编程
    查看>>
    CSS入门总结
    查看>>
    使用 TortoiseGit 时,报 Access denied 错误
    查看>>
    基于 HTML5 WebGL 的污水处理厂泵站自控系统
    查看>>
    django-表单之模型表单渲染(六)
    查看>>
    c++之程序流程控制
    查看>>
    spring-boot-2.0.3之redis缓存实现,不是你想的那样哦!
    查看>>
    有道云笔记 同步到我的博客园
    查看>>
    李笑来必读书籍整理
    查看>>
    Hadoop(十六)之使用Combiner优化MapReduce
    查看>>
    《机器学习Python实现_10_06_集成学习_boosting_gbdt分类实现》
    查看>>
    CoreCLR源码探索(八) JIT的工作原理(详解篇)
    查看>>
    andriod 开发错误记录
    查看>>
    C语言编译错误列表
    查看>>
    看明白这两种情况,才敢说自己懂跨链! | 喵懂区块链24期
    查看>>
    CentOS5 Linux编译PHP 报 mysql configure failed 错误解决办法
    查看>>
    pycharm新建文件夹时新建python package和新建directory有什么区别?
    查看>>