sql server备份损坏

转自:https://www.cnblogs.com/zhijianliutang/p/4080916.html

1、备份文件和数据库放在同一个(或一组)的物理磁盘上。磁盘出现故障,备份也保不住了。

2、备份介质随坏,或者做的是网络备份,数据在网络传输中发生了损坏。

3、数据库在做完整备份、文件备份或者文件组备份的时候,里面的内容就已经有了随坏。

所以基于此,我们要避免的就是以上三种情况的发生,此外还有一种情况就是SQL Server在做数据库备份的时候为节省时间,基本只是很简单的把数据页面拷贝下来,不会做一致性检查。但是在恢复的时候,需要将数据库恢复(Recover)到事务一致性的一个时间点。如果备份中的损坏妨碍了SQL Server的前滚后滚(Redo和Undo)、恢复动作就会遇到错误,这时候我们该如何做呢?

其实在现实坏境中,遇到此问题大部分是硬件错误导致,但是该类错误往往会永久的随坏备份文件里的内容,在SQL 2005之前的版本,遇到此问题只能去找更早的备份。但这就意味着会有产生很多的数据丢失。

所以在SQL 2005之后引入了一个新的“忽略错误”的恢复功能,这种情况在危难的是时候可以很好的发挥作用。

该命令为:CONTINUE_AFTER_ERROR

该命令是会恢复(RESTORE)命令里的一个新选项。它将使还原操作跳过错误继续进行,并还原SQL Servr现有所有功能还原的所有内容。数据还原结束后,可以应用后续事务日志备份,将数据库恢复。如果日志恢复时遇到错误,SQL Server会在日志中报告,并且不让用户访问和操作这些事务有关的页面。数据库将在尽可能的情况相爱联机。所以大部分情况下,数据库整体还是能恢复出来,只是部分数据有可能会丢失。

数据丢失取决于遇到的错误。例如,一般数据页中的错误只会引起该页进入可可疑状态,但数据库恢复还是会继续。有问题的页面编号将被写入磁盘并记录到suspect_pages表和错误日志中,提醒管理员在恢复结束后继续处理他们。如果不设置CONTINUE_AFTER_ERROR,SQL Server只要遇到一个页面有问题,整个恢复动作都会停止。

如果错误发生在一些比较关键的地方,比如某个数据文件的文件头信息,那么恢复还是有可能完全失败,数据库无法恢复。所有这个方法只供救火的时候用,不能保证每次使用的效果。

在使用该命令完成还原数据库后,记得要检查错误日志以了解有关的详细信息。

该命令语法如下:

  1. RESTORE DATABASE database_name
  2. FROM backup device WITH CONTINUE_AFTER_ERROR,NORECOVERY....

管理员在忽略错误继续执行还原顺序结束时,使用DBCC CHECKDB修复数据库。要使得CHECKDB在使用RESTORE CONTINUE_AFTER_ERROR 后以最大的一致性运行,建议在DBCC CHECKDB命令中使用WITH TABLELOCK选项。在极个别情况下,可能没有没有足够的信息来修复数据库,CHECKDB也没有办法修好数据库,数据丢失将不可避免。不是说,有了RESTORE CONTINUE_AFTER_ERROR,备份坏掉也没关系。

其实最关键的是还是建立备用服务器,改变单一磁盘的尴尬。

CONTINUE_AFTER_ERROR只不过是通过命令跳过一切它能够跳过错误,将所有还能读出来的数据恢复出来,从而最大程度的挽回数据。但是有些数据对一致性要求比较高的系统这样是不能接受的。

对于这样的系统,在建立备份和选择恢复策略的时候,就要考虑到最坏的情况,预先想好方案,将损失降到最低。

可以找一台备用机,做Log Shipping,这个方法值得推荐,主要是成本低

有以下几点优点:

1、比起物理镜像之类的技术,这种方案比较经济。备用服务硬件的要求不高,只要硬盘足够大。

2、虽然SQL Server提供了若干备份校验机制,但是确保备份完整可靠性的唯一办法就是真正的去恢复它。

3、提前恢复备份,使得真正灾难发生时,只需要恢复最后一个日志备份即可。而不需要在火烧眉毛的时候,去等那漫长的完整备份恢复,可以大大节约灾难恢复时间。

4、备用机上的数据库虽然不能修改,但是可以使用standby参数将数据库恢复到只读模式。可以将一些报表查询工作转移到备用机上,减轻生产服务器的负担。

总之,数据安全非常重要,灾难恢复时间要求很短的数据库,如果没有镜像技术的保证,备用服务器非常必要的。

sql server备份损坏的更多相关文章

  1. SQL Server数据库损坏、检测以及简单的修复办法

    简介     在一个理想的世界中,不会存在任何数据库的损坏,就像我们不会将一些严重意外情况列入我们生活中的日常一样,而一旦这类事情发生,一定会对我们的生活造成非常显著的影响,在SQL Server中也 ...

  2. 17、SQL Server 备份和还原

    SQL Server 备份 恢复模式 SQL Server 数据恢复模式分为三种:完整恢复模式.大容量日志恢复模式.简单恢复模式. 完整恢复模式 默认的恢复模式,它会完整记录下操作数据库的每一个步骤, ...

  3. SQL Server 备份和还原

    SQL Server 备份和还原   SQL Server 备份 恢复模式 SQL Server 数据恢复模式分为三种:完整恢复模式.大容量日志恢复模式.简单恢复模式. 完整恢复模式 默认的恢复模式, ...

  4. sql server 备份恢复效率

    sql server 备份恢复效率 如何提高备份的速度呢? 其实这个问题和如何让系统跑的更快是一样的,要想系统跑的更快,无非就是:优化系统,或者就是更好更强大的服务器,特别是更多的cpu.更大的内存. ...

  5. 第一篇——第一文 SQL Server 备份基础

    原文:第一篇--第一文 SQL Server 备份基础 当看这篇文章之前,请先给你的所有重要的库做一次完整数据库备份.下面正式开始备份还原的旅程. 原文出处: http://blog.csdn.net ...

  6. SQL Server 备份和还原全攻略

    原文:SQL Server 备份和还原全攻略 一.知识点 完全备份: 备份全部选中的文件夹,并不依赖文件的存档属性来确定备份那些文件.(在备份过程中,任何现有的标记都被清除,每个文件都被标记为已备份, ...

  7. SQL点滴12—SQL Server备份还原数据库中的小把戏

    原文:SQL点滴12-SQL Server备份还原数据库中的小把戏 备份数据库时出现一个不太了解的错误 ,错误信息“is formatted to support  1 media families, ...

  8. Data Base sql server 备份数据库

    sql server 备份数据库 1.维护计划向导: 右键维护计划-维护计划向导-然后安装提示: 勾选自己要干的事,比如:完整备份数据库.差异备份数据库等等 2.作业计划: 如下图: SQL Serv ...

  9. SQL Server备份时间段内插入的数据依旧进入了备份文件?(转载)

    问 MSSql我在本机测试了下.为了延长备份时间,找个大的数据库.开始完整备份bak然后再此库新建表,并增添数据.备份结束.==================还原备份后,在还原的数据库内发现新增的表 ...

随机推荐

  1. 关于vue-resource 跨域请求的异常处理方法

    当你启动一个vue项目时,项目会运行在一个webpack的服务上,所以此时去访问其他端口或者是其他地址时,属于跨域请求,故会报异常. has been blocked by CORS policy: ...

  2. Rabbitmq的高级特性

    消息如何保证100%投递成功? 什么是生产端的可靠性投递? 1.保障消息的成功发出 2.保障MQ节点的成功接收 3.发送端收到MQ节点(Broker)确认应答 4.完善的消息补偿机制 BAT互联网大厂 ...

  3. lcx用法

    lcx使用方 本机IP:192.168.125.11      目标机IP:192.168.125.101 本机运行: lcx -listen 3333  2222 目标机运行:lcx -slave ...

  4. 「CF803C」 Maximal GCD

    题目链接 戳我 \(Solution\) 令\(gcd\)为\(x\),那么我们将整个序列\(/x\),则序列的和就变成了\(\frac{n}{x}\),所以\(x\)必定为\(n\)的约数所以现在就 ...

  5. 有趣但是没有用的linux命令

    1,小火车 #yum install sl 2,黑客帝国,代码雨 # wget https://jaist.dl.sourceforge.net/project/cmatrix/cmatrix/1.2 ...

  6. Linux搭建PHP环境(LAMP)

    //安装Apache的命令 # yum install httpd //启动Apache的命令 # service httpd start //安装MySQL的命令 # wget http://dev ...

  7. SqlHelper 类

    // 一个自用的 SqlHelper 类 利用了刚学习到的 扩展方法 http://technet.microsoft.com/zh-cn/bb383977 /// <summary> / ...

  8. 设计模式--观察者模式--python

    观察者模式: 对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新. 主要解决: 当一个抽象模型有两个方面, 其中一个方面依赖于另一方面.将这二者封装在 ...

  9. 【makefile】make程序的命令行选项和参数

    Make命令参数的典型序列如下所示: make [-f makefile文件名][选项][宏定义][目标] 这里用[]括起来的表示是可选的.命令行选项由破折号“–”指明,后面跟选项,如: make – ...

  10. Deep Visualization:可视化并理解CNN

    原文地址:https://zhuanlan.zhihu.com/p/24833574 一.前言 CNN作为一个著名的深度学习领域的“黑盒”模型,已经在计算机视觉的诸多领域取得了极大的成功,但是,至今没 ...