你真的会使用SQL Server的备份还原功能吗?之二:主要备份类型
假设在下面几个时间段中,一个数据库积累插入了如下数据:

1.完整数据库备份
故名思意,完整数据库备份包括完整的数据库信息。它包括数据库的数据文件和备份结尾的部份活动事务日志。

完整备份基本语法如下:
BACKUP DATABASE AdventureWorks TO DISK = 'g:/backups/AdventureWorks.bak'
2.差异性数据库备份
差异性数据库备份包括自从上一次完整性备份以来所有改变的数据页,以及备份结尾的部份活动事务日志。

差异备份和完整备份的语法很相似,唯一不同的是加上了DIFFERENTIAL选项,如下:
BACKUP DATABASE AdventureWorks TO DISK = 'g:/backups/AdventureWorks.bak' WITH DIFFERENTIAL
3.事务日志备份
事务日志备份的内容是从还未被备份的事务日志开始,直到备份结尾的最后一个事务日志为止。需要注意的是执行事务日志的前提是你的数据库恢复模型必须是完整恢复模型或是批量日志恢复模型(恢复模型)

通常情况下大家会以为完整性备份会截断事务日志,以便下一次备份日志时不再重复备份,但这是错误的。完整备份不会截断事务日志。

事务日志备份的语法和完整备份相似,唯一不同的是第二个关键字,把database换成log,如下:
BACKUP LOG AdventureWorks TO DISK = 'g:/backups/AdventureWorks.bak'
4.你应该选择哪种备份类型呢?
答案取决于你本身,取决你的备灾恢复需求,取决于你可以接受的丢失数据量的多少,取决于你日常数据库的备份操作,取决于数据库从灾难中恢复过来的时间。
假如你的环境允许丢失5分钟的数据,那么你必须每5分钟执行一次某种备份。对于上述的几种备份来说,每5分钟执行一次完整备份的规则显得过于频繁且 影响其他用户的操作。对于差异备份来说,如果一次完整备份后,数据库又进行了大量的修改,那么差异备份同样不适合。所以,上述情况用事务日志备份应该是最 合适的,因为它仅备份从最后一次事务日志备份后所产生的新事务。
然而,当你从事务日志恢复数据库时,你需要还原所有相关的备份,包括从起始的数据库备份点到最后一个事务日志。假如还原点是很久以前的时间点,那么要还原的事务日志也许会很多很多。

你可以使用差异备份来提前事务日志备份的起始还原点。但是,对于一个行动的数据来说,差异备份会比事务日志备份占用更长的时间,影响更多的数据库操作和消耗更多的磁盘空间。

当你考虑使用哪种备份方案时,你可以参考下面这几点:
- 你能接受丢失多少数据?
- 备份会影响数据库日常操作吗?
- 是否有一个高可用的维护计划来执行备份操作?
- 你能接受的恢复时间是多少?
- 是否需要具有恢复某一时间点的功能?这种情况下,事务日志备份是必须的。
- 是否有足够的存储空间来保存备份文件?
- 是否有一套高可用性的解决来完成备灾恢复计划?比如:群集, loggshipping, 数据库镜像等等
你真的会使用SQL Server的备份还原功能吗?之二:主要备份类型的更多相关文章
- SQL Server in Docker - 还原数据库
SQL Server in Docker 还原数据库 上一会演示了如果在Docker环境下安装SQL Server,这次我们来演示下如何还原一个数据库备份文件到数据库实例上. 使用winscp上传ba ...
- SQL SERVER 2008 R2 还原数据库3154错误
1.SQL SERVER 2008 在还原数据库时,会报错. 提示错误:"备份集中的数据库备份与现有的 '***' 数据库不同.RESTORE DATABASE 正在异常终止. (Micro ...
- SQL Server 2008 R2 性能计数器详细列表(二)
原文:SQL Server 2008 R2 性能计数器详细列表(二) SQL Server Buffer Partition 对象: 提供计数器来监视 SQL Server 如何使用可用页 SQL S ...
- 在SQL SERVER 2005中还原数据库时出现错误:system.data.sqlclient.sqlerror 媒体集有 2 个媒体簇 但只提供了 1 个。必须提供所有成员。 (microsoft.sqlserver.smo)
问题:在SQL SERVER 2005中还原数据库时出现错误:system.data.sqlclient.sqlerror 媒体集有 2 个媒体簇 但只提供了 1 个.必须提供所有成员. (micro ...
- SQL Server 2008 数据库镜像部署实例之二 配置镜像,实施手动故障转移
SQL Server 2008 数据库镜像部署实例之二 配置镜像,实施手动故障转移 上一篇文章已经为配置镜像数据库做好了准备,接下来就要进入真正的配置阶段 一.在镜像数据库服务器上设置安全性并启动数据 ...
- SQL Server数据库中还原孤立用户的方法集合
虽然SQL Server现在搬迁的技术越来越多,自带的方法也越来越高级. 但是我们的SQL Server在搬迁的会出现很多孤立用户,微软没有自动的处理. 因为我们的数据库权限表都不会在应用数据库中,但 ...
- Python和SQL Server 2017的强大功能
Python和SQL Server 2017的强大功能 摘要: 源:https://www.red-gate.com/simple-talk/sql/sql-development/power-pyt ...
- c#直接调用ssis包实现Sql Server的数据导入功能
调用ssis包实现Sql Server的数据导入功能网上已经有很多人讨论过,自己参考后也动手实现了一下,上一次笔者的项目中还用了一下这个功能.思前想后,决定还是贴一下增强记忆,高手请54. 1.直接调 ...
- MySQL数据库备份还原(基于binlog的增量备份)
MySQL数据库备份还原(基于binlog的增量备份) 一.简介 1.增量备份 增量备份 是指在一次全备份或上一次增量备份后,以后每次的备份只需备份与前一次相比增加或者被修改的文件.这就意味 ...
- 你真的会使用SQL Server的备份还原功能吗?之一:恢复模型
在SQL Server中,除了系统数据库外,你创建的每一个数据库都有三种可供选择的恢复模型: Simple(简单), full(完整), bulk-logged(批量日志). 下面这条语句可以显示出所 ...
随机推荐
- bzoj 3594 [Scoi2014]方伯伯的玉米田(DP+二维BIT)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3594 [题意] 给定一个n个数的序列,有K次将一个区间内的数加1的机会,问最长不下降子 ...
- 《Linux设备驱动程序》 笔记2
驱动代码hello.c #include <linux/init.h> #include <linux/module.h> static int hello_init(void ...
- C++ __int64用法(转)
在做ACM题时,经常都会遇到一些比较大的整数.而常用的内置整数类型常常显得太小了:其中long 和 int 范围是[-2^31,2^31),即-2147483648~2147483647.而unsig ...
- ESP8266调试问题
1 串口连接电脑调试时,GPIO15必须接地,否则没响应 2发送退出透传指令“+++”时,必须取消勾选发送新行.发送别的指令时须勾选. 另外若所刷固件版本为[Vendor:www.ai-thinker ...
- OWA修改密码注意事项
Exchange搭建参考 http://yuelei.blog.51cto.com/202879/76302 http://543925535.blog.51cto.com/639838/d-37/p ...
- DMOZ介绍以及如何提交
转载自 http://www.cnblogs.com/freespider/archive/2009/12/28/1633818.html Dmoz介绍及怎么提交? 1.Dmoz目录简介: Dmoz是 ...
- [转]Torch是什么?
Torch是一个广泛支持机器学习算法的科学计算框架.易于使用且高效,主要得益于一个简单的和快速的脚本语言LuaJIT,和底层的C / CUDA实现:Torch | Github 核心特征的总结:1. ...
- HDU 5828 Rikka with Sequence (线段树+剪枝优化)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5828 给你n个数,三种操作.操作1是将l到r之间的数都加上x:操作2是将l到r之间的数都开方:操作3是 ...
- android 工具类之图片加工
/** * 图片加工厂 * * @author way * */ public class ImageUtil { /** * 通过路径获取输入流 * * @param path * 路径 * @re ...
- log4net使用简明教程
转自: http://www.cnblogs.com/songhaipeng/p/3343606.html http://www.cnblogs.com/TianFang/archive/2013/0 ...