你真的会使用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(批量日志). 下面这条语句可以显示出所 ...
随机推荐
- 朝鲜RedStar_OS_3.0安装图解
前天exploit-db上出现了3个Local Exploit,都是来自朝鲜的RedStar 3.0的vul.网上也下到了镜像,按网上的方法测试了下,真的是 ————————————————————— ...
- delphi 中怎么知道某一个月有多少天
if (month in (1,3,5,7,8,10,12)) return 31; else if (month in(4,6,9,11)) return 30; else if (year 是闰年 ...
- 为什么要Cssreset
1.CssReset是什么?由于html标签在各浏览器的默认样式解析出来的有所不同.例如<ul>标签在IE.firefox.chrome浏览器下默认边距是不一样的.各浏览器的默认样,会给我 ...
- 主机找不到vmnet1和vmnet8
今天跑程序时,突然发现虚拟机ping不通主机了,返过来可行,防火墙什么的都设置好了,仍然不行,后来发现,在网络和共享中心已经看不到vmnet1和vmnet8了,更改适配器设置也只有本地连接和宽带连接, ...
- jBox使用方法
1.引入jquery文件 2.引入css和jBox文件 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml& ...
- jxse2.6在jdk8下,JxtaMulticastSocket存在的问题
JxtaMulticastSocket覆写了java.net.MulticastSocket的bind方法: @Override public void bind(SocketAddress addr ...
- 您的IP不在有效范围 ip:port为 [10.15.22.15]
- Database事件研究
1.Database.ObjectAppended.ObjectModified.ObjectErased事件 此事件如果不是Transaction提交而触发的,那么可以在事件内部使用Transact ...
- Uncaught TypeError: Object #<Object> has no method 'fancybox'
Uncaught TypeError: Object #<Object> has no method 'fancybox' 2011-10-24 16:51:19| 分类: html|举 ...
- react native 网络get请求方式参数不可为undefined或null
react native 网络get请求方式参数不可为undefined(为空的话默认变为)或null 错误写法: export function addToCartAction(isRefreshi ...