SQL SERVER有好多好多功能,选项也一大堆,很多功能选项并不常用。但是如果真有这种需求的时候又想不起来~

   本篇我们就来聊聊备份里的选项checksum,这是个啥玩意?听都没听过?来看下图:

   

   就是这个选项!不知道各位看官是否知道是干什么的?怎么用? 我询问了几个群友都没用过,正好手头有环境,那么我就用例子给大家演示一下吧!

--------------博客地址---------------------------------------------------------------------------------------

Expert 诊断优化系列 http://www.cnblogs.com/double-K/

 

废话不多说,直接开整-----------------------------------------------------------------------------------------

  首先我们看一下微软官方文档给的说明:

错误管理选项

使用这些选项可以确定是否为备份操作启用了备份校验和,以及备份操作是否将在遇到错误时停止。

{ NO_CHECKSUM | CHECKSUM }
控制是否启用备份校验和。

NO_CHECKSUM
显式禁用备份校验和的生成(以及页校验和的验证)。 这是默认行为。

CHECKSUM
如果此选项已启用并且可用,则指定备份操作将验证每页的校验和及页残缺,并生成整个备份的校验和。

使用备份校验和可能会影响工作负荷以及备份吞吐量。

  这也许是大多数人的了解“启用了备份校验和,备份操作将在遇到错误时停止”,因为看过官方文档知道怎么用,手头正好有坏库,正好做个示范~

  我们先看一下DBCC CHECKDB的结果 ,目的只是告诉你这是一个有坏页的数据库!

  

  好了,那我们做一下备份看看!

  正常的备份,不加 checksum 成功备份!

  

  

  加上checksum备份,失败!

  

  好像果然和微软文档说的一样!看到这有些看官会想,这不和我做CHECKDB差不多了么?

  

  博主别的不多就是坏库多! 我们再拿一个库试一下!

  我们先看一下DBCC CHECKDB的结果 ,目的只是告诉你也这是一个有坏页的数据库!

  

  我们用checksum 备份一下

  

   哦??成功了???这是啥意思??

   我们先来看一下 backupset的结果 :

   

   那么损坏的页没check出来?我们再看一下 suspect_pages

   

   

    suspect_pages里只查出了Test 库的坏页,那我XB28_3库的坏页哪里去了?

    突然想到 suspect_pages 里面的数据只是 823 错误或 824 错误而失败的页!

    而且使用checksum系统表会被漏掉,本文中XB28_3库的坏页就是一个object_id = 60的 系统表!

     而且并不是数据库中所有的页都会被叫上页校验和,当页损坏发生时,IO系统可不会区分损坏的页是有页校验和还是没有校验和的。所以使用BACKUP ... WITH CHECKSUM就有可能导致一些损坏页不被发现

  

    这也说明备份时使用checksum不能完全取代DBCC checkDB的作用,这和Paul Randal大神的文章一致 : A SQL Server DBA myth a day: (27/30) use BACKUP WITH CHECKSUM to replace DBCC CHECKDB

--------------博客地址---------------------------------------------------------------------------------------

Expert 诊断优化系列 http://www.cnblogs.com/double-K/

 

-----------------------------------------------------------------------------------------------------

  

  总结 :备份的checksum 选项可以用来发现数据库是否损坏,但不是所有类型的坏页都可以发现。

      看官们的疑问:backup with checksum 可以用来取代DBCC checkDB。

     这个观点是不正确的,一些逻辑一致性错误checksum是没法发现的!

        

     数据库损坏不是很常见,很多DBA工作好多年都没有遇到,但是做好CHECKDB检查还是很必要的!万一出现你没有发现就比较悲剧了!

  

  PS : 差异备份也可以使用checksum,但只会校验差异部分~

----------------------------------------------------------------------------------------------------

注:此文章为原创,欢迎转载,请在文章页面明显位置给出此文链接!
若您觉得这篇文章还不错请点击下右下角的推荐,非常感谢!

数据库备份checksum选项你会用么?的更多相关文章

  1. SQL SERVER 运维日记-数据库备份

    概述 昨天下午突然看到,<炉石传说>游戏数据库发生宕机并引发数据丢失事故的新闻.刚看到时,满满的不可思议.暴雪啊,网易啊. 都是很牛叉的公司.他们出的游戏我都是很喜欢的. 当我看到,第一时 ...

  2. SQLSERVER数据库备份操作和还原操作做了什么

    SQLSERVER数据库备份操作和还原操作做了什么 看了这篇文章:还原/备份时做了些什么 自己也测试了一下,下面说的错误日志指的是SQLSERVER ERRORLOG 一般在C:\Program Fi ...

  3. backup1:开始数据库备份

    数据库备份分为数据文件备份和日志文件备份,数据文件的备份分为:完整备份和差异备份.在SQL Server 2012中,能够将数据分布式备份到不同的存储设备上,一般情况,只将数据备份到一个备份文件(.b ...

  4. Xtrabackup原理及使用innobackupex进行MySQL数据库备份恢复

    Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具. Xtrabackup中主要包含两个工 ...

  5. SQL Server 数据库备份还原和数据恢复

      认识数据库备份和事务日志备份 数据库备份与日志备份是数据库维护的日常工作,备份的目的是在于当数据库出现故障或者遭到破坏时可以根据备份的数据库及事务日志文件还原到最近的时间点将损失降到最低点. 数据 ...

  6. SQL SERVER 数据库备份的三种策略及语句

    1.全量数据备份    备份整个数据库,恢复时恢复所有.优点是简单,缺点是数据量太大,非常耗时 全数据库备份因为容易实施,被许多系统优先采用.在一天或一周中预定的时间进行全数据库备份使你不用动什么脑筋 ...

  7. 【MySql】C#数据库备份与还原

    public static class SQLBackup { /// <summary> /// 执行Cmd命令 /// </summary> /// <param n ...

  8. mariadb数据库备份学习笔记

    备份类型: 完全备份 部分备份:仅备份其中的一张表或多张表 增量备份:仅备份从上次完全备份或增量备份之后变化的数据部分 热备份:在线备份,读写操作不受影响 温备份:在线备份,读操作可继续进行,但写操作 ...

  9. Oracle数据库备份手册

    1         故障类型 l  实例故障 由ORACLE内部异常.操作系统故障或其它相关软件引起,导致ORACLE实例中的进程或内存区出现故障或数据库无法正常关闭,这种故障称为实例故障.实例故障没 ...

随机推荐

  1. WinForm 中TreeView 控件的使用实例

    新建一个窗体,在本窗体界面上需要以下几个按钮 (一个TreeView    一个 TextBox  三个Button 按钮) 后台代码如下: using System; using System.Co ...

  2. css3动画效果

    css3中的transform中有旋转,放缩,倾斜,平移的功能,分别对应的属性是:rotate,scale,skew,translate 旋转:(rotate) [css] view plaincop ...

  3. NSNotification\KVO\block\delegate的区别和用法

    在开发ios应用的时候,我们会经常遇到一个常见的问题:在不过分耦合的前提下,controllers间怎么进行通信.在IOS应用不断的出现三种模式来实现这种通信: 1.委托delegation: 2.通 ...

  4. 2016huasacm暑假集训训练四 数论_A

    题目链接:http://acm.hust.edu.cn/vjudge/contest/125308#problem/F 题意:狼捉兔子,兔子躲在n个洞中一个,这n个洞围成一个圈,狼会从第0号洞开始,搜 ...

  5. VerifyCodeUtil.java

    package com.vcredit.framework.utils; import java.awt.Color;import java.awt.Font;import java.awt.Grap ...

  6. Final-阶段站立会议6

    组名:天天向上 组长:王森 组员:张政.张金生.林莉.胡丽娜 代码地址:HTTPS:https://git.coding.net/jx8zjs/llk.git SSH:git@git.coding.n ...

  7. MongoDB学习记录

    一.操作符 "$lt" :"<""$lte" :"<=""$gt" :"> ...

  8. Java Basic Exception

    异常处理经验小结之一:不要直接抛出InvocationTargetException  (转http://olylakers.iteye.com/blog/1137371) 在最近一段时间的工作中,积 ...

  9. wed应用程序开发原理

    ---恢复内容开始--- 企业应用演变的模式 1.主机/哑终端的集中计算模式 时间二十世纪七十年代,企业应用程序是围绕一个中心大型主机建立的.特点 大,贵,专用.只有输入输出功能,没有处理能力,全部是 ...

  10. 【转】C++格式化输出

    在输出数据时,为简便起见,往往不指定输出的格式,由系统根据数据的类型采取默认的格式,但有时希望数据按指定的格式输出,如要求以十六进制或八进 制形式输出一个 整数,对输出的小数只保留两位小数等.有两种方 ...