(4.9)SQL Server如何校验备份文件
SQL Server如何校验备份文件
你遇到的最糟糕的事莫过于备份文件无法还原数据库了。我这里并不是说缺少磁盘空间或者类似的事导致的无法还原,而是一个100%确认已经被损坏的备份文件。你会问,那我怎么办呢?别着急,SQL Server有一个完善的还原功能来验证备份文件。
举个例子,当你第一次创建了一个备份文件,它应该是好的,但这仅仅是“应该”。每一次,这个文件被拷贝到另一个地方时,文件就会存在被损坏的风险。确认这个备份文件可以继续使用的最好的方法就是还原它,然后立即运行DBCC CHECKDB。如果当时条件不允许持续还原和检查,那么使用RESTORE VERIFYONLY命令就是你另一个最好的选择了。
不幸的是,这里面有个小问题。在SQL Server 2000里,在RESTORE VERIFYONLY会话期间,会发生下面这种情况:
![]()
现在,假如你使用一个16进制的编辑器(比如UE),任意修改备份文件中存储的数据,然后再次运行RESTORE VERIFYONLY,SQL Server仍然会告诉你“备份设备有效(The backup set is valid)”。
![]()
在SQL Server 2000里,RESTORE VERIFYONLY仅仅检查文件是否符合Microsoft Tape Format (MTF)规范,是否可以从磁盘读取数据。所以你的备份数据可能含有垃圾数据。
现在在SQL Server 2005里面,缺省的备份设置和2000一样。也就是说,假如你的备份文件在数据备份区域有垃圾数据的话,SQL Server 2005依然会报告:备份设置有效。
那我们应该如何应对呢?答案就是使用备份时使用CHECKSUM选项,例如:
BACKUP DATABASE AdventureWorks TO DISK = 'G:/backups/AdventureWorks_full.bak' WITH CHECKSUM
现在,假如你更改文件数据备份区域的一个字节,然后在那个文件上运行RESTORE VERIFYONLY的话,会产生如下提示:
Server: Msg 3189, Level 16, State 1, Line 1
Damage to the backup set was detected.
Server: Msg 3013, Level 16, State 1, Line 1
VERIFY DATABASE is terminating abnormally.
下图显示了运行过程:
![]()
RESTORE VERIFYONLY终于按照我们期望的方式工作了。在备份期间使用CHECKSUM选项会引起SQL Server执行如下操作:
- 为备份数据计算校验和。这个校验和可来与RESTORE VERIFYONLY过程中产生的校验和进行对比。
- 校验页的校验和。如果校验失败,备份就会被中止。这也是一个好办法,用于确认你从一开始,就正在备份一个“良好”状态的数据库。
那么,使用CHECKSUM会给你带来什么负面影响呢?
- 备份和还原时,会占用大量处理器时间
- 增加备份和还原时间
总之,在SQL Server 2000和2005中,使用默认备份设置的话,RESTORE VERIFYONLY不能检查出来备份文件的数据是否已经被破坏。仅仅在SQL Server 2005中当创建备份时使用了CHECKSUM选项的话,才能验证备份数据的完整性。
但是也许你们部门预算有限,并没有另外购买SQL Server 2005的license,怎么办呢?当然我们可以使用SQL Server 2005的Express版本。虽然SQL Server 2005Express是免费的,但是它仅仅支持4GB以下的数据库。不过很少有人知道,当使用RESTORE VERIFYONLY命令时,Express版本可以工作在大于4GB的文件上。没问题,你可以在你的备份文件服务器上安装Express,然后尽情的验证你的备份文件是否有效。
本文翻译自sqlbackuprestore,更多精彩内容请浏览http://www.sqlbackuprestore.com
(4.9)SQL Server如何校验备份文件的更多相关文章
- SQL Server 数据库基于备份文件的【一键还原】
1. 备份与还原的基础说明 我们知道在DBA的日常工作中,SQL Server 数据库的恢复请求偶有发生,可能是用作数据的追踪,可也可能能是数据库的灾难恢复. 数据库常用的备份命令如下: ----完整 ...
- 更改SQL Server中默认备份文件夹
当你安装SQL Server时,安装路径一般如下:C:\Program Files\Microsoft SQL Server\MSSQL.2\MSSQL.在这个目录下也有数据文件的文件夹和备份文件的文 ...
- SQL Server 数据库本地备份文件通过OSS工具上阿里云(恢复还原数据库)
SQL Server数据库上云,通过备份文件上传进行恢复. 1.通过OSS工具上传备份文件. 相关知识和操作步骤请参考: https://blog.csdn.net/weixin_35773751/a ...
- SQL Server 数据库bak备份文件还原操作和mdf文件附加操作
前言:现在任何软件都离不开数据的支持,数据的价值是无价的,因此数据目前显得尤为重要,日常软件生产库的数据定时或实时备份必不可少,备份出的文件也需要进行验证,下边我将介绍SQL Server数据的的备份 ...
- SQL Server 通过备份文件初始化复制
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 搭建过程(Process) 注意事项(Attention) 疑问(Questions) 参考文 ...
- SQL Server 通过备份文件初始化复制 – 听风吹雨
一.背景 MySQL在对有历史数据的数据库进行搭建复制(Master/Slave)的时候,可以通过在Master服务器备份历史数据,利用这个备份文件 在Slave进行还原:这样做的好处是可以更加快速的 ...
- SQL Server 2014 Backup Encryption
转载自: Microsoft MVP Award Program Blog 来源:Microsoft MVP Award Program Blog 的博客:https://blogs.msdn.mic ...
- sql server 备份与恢复系列七 页面还原
一.概述 当数据库发生损坏,数据库的每个文件都能打开,只是其中的一些页面坏了,这种情况可以借助DBCC CHECKDB进行数据库检查修复.如果要保证数据库不丢失,或修复不好,管理员只能做数据库完整恢复 ...
- 阿里云RDS SQL Server 2008 R2 使用本地SQL备份文件还原全过程
最近公司准备全面转向阿里云,写了好几个方案,最终决定购买一台ECS和一台RDS搭配使用.开始对阿里的RDS产品陌生,加上公司的数据库文件近20G,诸多担心,生怕产品买来了不能用,给公司造成损失.后来联 ...
随机推荐
- 自己写浏览器和webserver的分析!
自己写浏览器和webserver 在android写一个浏览器 editText:输入网址ip:port/login.html.提交 把域名解析成ip 产生请求行 get login.html /r/ ...
- Android编程之Fragment使用动画造成Unknown animation name: objectAnimator异常
在为Fragment做切换动画.启动后遇到了一个异常: Caused by: java.lang.RuntimeException: Unknown animation name: objectAni ...
- 转 spring官方文档中文版
转 http://blog.csdn.net/tangtong1/article/details/51326887另附码云地址 https://gitee.com/free/spring-framew ...
- [原创]FreeSWITCH实现多人来电思路
[原创]FreeSWITCH实现多人来电思路 场景介绍 该篇文章主要用于介绍如何使用FreeSWITCH实现通讯系统中常见的多人来电功能. 具体场景如下: A与B正在通话中,此时C拨打A/B,Free ...
- Spring mvc 注解@ResponseBody 返回内容编码问题
@ResponseBody 在@Controller 类方法中能够让字符串直接返回内容. 其返回处理的类是org.springframework.http.converter.StringHttpMe ...
- Xilinx 7系列例化MIG IP core DDR3读写
昨晚找了一下,发现DDR3读写在工程上多是通过例化MIG,调用生成IPcore的HDL Functional Model.我说嘛,自己哪能写出那么繁琐的,不过DDR读写数据可以用到状态机,后期再添砖加 ...
- kafka 部分问题处理记录
转载请注明原创地址:http://www.cnblogs.com/dongxiao-yang/p/7600561.html 一 broker启动后ReplicaFetcherThread OOM 版 ...
- Google Chrome v48.0.2564.
http://www.pcpop.com/doc/1/1819/1819996.shtml 摘要:谷歌浏览器Chrome Stable 稳定版迎来例行升级,新版本号为v48.0.2564.82,上一版 ...
- libubox组件(2)——blob/blobmsg (转载 https://segmentfault.com/a/1190000002391970)
一:blob相关接口 1.数据结构 1: struct blob_attr { 2: uint32_t id_len; /** 高1位为extend标志,高7位存储id, 3: * 低24位存储dat ...
- PHP编译configure时常见错误
PHP的安装虽然有时候很简单,可是如果应用一多,我们安装起来就很头痛了!出错最多的就是安装PHP扩展的时候了.其实不管是你是Apache类的应用还是Nginx类的,PHP的安装都不是很简单,虽然网上有 ...