SQL Server如何校验备份文件

转自:https://blog.csdn.net/tjvictor/article/details/5261666
RESTORE VERIFYONLY与 checksum

  你遇到的最糟糕的事莫过于备份文件无法还原数据库了。我这里并不是说缺少磁盘空间或者类似的事导致的无法还原,而是一个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如何校验备份文件的更多相关文章

  1. SQL Server 数据库基于备份文件的【一键还原】

    1. 备份与还原的基础说明 我们知道在DBA的日常工作中,SQL Server 数据库的恢复请求偶有发生,可能是用作数据的追踪,可也可能能是数据库的灾难恢复. 数据库常用的备份命令如下: ----完整 ...

  2. 更改SQL Server中默认备份文件夹

    当你安装SQL Server时,安装路径一般如下:C:\Program Files\Microsoft SQL Server\MSSQL.2\MSSQL.在这个目录下也有数据文件的文件夹和备份文件的文 ...

  3. SQL Server 数据库本地备份文件通过OSS工具上阿里云(恢复还原数据库)

    SQL Server数据库上云,通过备份文件上传进行恢复. 1.通过OSS工具上传备份文件. 相关知识和操作步骤请参考: https://blog.csdn.net/weixin_35773751/a ...

  4. SQL Server 数据库bak备份文件还原操作和mdf文件附加操作

    前言:现在任何软件都离不开数据的支持,数据的价值是无价的,因此数据目前显得尤为重要,日常软件生产库的数据定时或实时备份必不可少,备份出的文件也需要进行验证,下边我将介绍SQL Server数据的的备份 ...

  5. SQL Server 通过备份文件初始化复制

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 搭建过程(Process) 注意事项(Attention) 疑问(Questions) 参考文 ...

  6. SQL Server 通过备份文件初始化复制 – 听风吹雨

    一.背景 MySQL在对有历史数据的数据库进行搭建复制(Master/Slave)的时候,可以通过在Master服务器备份历史数据,利用这个备份文件 在Slave进行还原:这样做的好处是可以更加快速的 ...

  7. SQL Server 2014 Backup Encryption

    转载自: Microsoft MVP Award Program Blog 来源:Microsoft MVP Award Program Blog 的博客:https://blogs.msdn.mic ...

  8. sql server 备份与恢复系列七 页面还原

    一.概述 当数据库发生损坏,数据库的每个文件都能打开,只是其中的一些页面坏了,这种情况可以借助DBCC CHECKDB进行数据库检查修复.如果要保证数据库不丢失,或修复不好,管理员只能做数据库完整恢复 ...

  9. 阿里云RDS SQL Server 2008 R2 使用本地SQL备份文件还原全过程

    最近公司准备全面转向阿里云,写了好几个方案,最终决定购买一台ECS和一台RDS搭配使用.开始对阿里的RDS产品陌生,加上公司的数据库文件近20G,诸多担心,生怕产品买来了不能用,给公司造成损失.后来联 ...

随机推荐

  1. #1214 - The used table type doesn't support FULLTEXT indexes解决办法

    #1214 - The used table type doesn't support FULLTEXT indexes报此错误的原因是:InnoDB不支持FULLTEXT类型的索引. 网上的解决办法 ...

  2. 未能加载文件或程序集“WebGrease, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)

    方法一:在web.config的configuration接点中添加,最好是添加在configuration节点的最后 <runtime> <assemblyBinding xmln ...

  3. .NET Core环境安装

    .Net Core可从https://www.microsoft.com/net/download下载 如果你使用自己喜欢的命令行工具或使用Visual Studio Code,你需要下载.NET C ...

  4. Centos系统设置

    1.设置中文语言 yum install fonts-chinese vim /etc/sysconfig/i18n LANG="zh_CN.GB18030" LANGUAGE=& ...

  5. javacript计时

    简单的计时: var t=setTimeout("alert('5 秒!')",5000) 无限计时: var c=0 var t function timedCount() { ...

  6. spring 第一篇(1-3):鸟瞰spring蓝图

    如你所见,spring框架的核心是关注于如何使用DI.AOP和模板来让企业级java开发变得更简单.spring确实也是这样做的,所以很值得你去使用它.不过spring内容可能比你所能看到的要多很多. ...

  7. va_list可变参数

    可变参数函数实现 va_list,va_start,va_arg,va_end va可变参数意思,variable-argument. 1. 头文件及实现 linux中定义在gcc头文件中,stdar ...

  8. phpexcel图形图表(二)图形

    原创文章,转载请注明出处:http://www.cnblogs.com/phpgcs 本篇文章实例演示如上图,画3种图形以及多sheet操作等 先回忆下第一篇中line图形的API调用步骤: 1,引入 ...

  9. Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights

    第一次提交遇到这样的情况,怎么回事呢,我在github上提交了ssh key 的啊. 排查先看看能不能解析, 1.先 ping https://github.com 把ip添加到 host :    ...

  10. a标签跳转新页面

    var url = $("#email_kong").val();       //url=mail.qq.com url = "http://"+url;   ...