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只要遇到一个页面有问题,整个恢复动作都会停止。

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

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

该命令语法如下:

RESTORE DATABASE database_name
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. 验证码生成 C#

    /// <summary> /// 验证码类 /// </summary> public class Rand { #region 生成随机数字 /// <summary ...

  2. vue整合adminLTE

    前端框架AdminLTE 中文教程 如何用vue整合adminlte模板 1.adminlte 下载地址 : https://github.com/almasaeed2010/AdminLTE/rel ...

  3. Java web分级测试评分C级感受

    上周一进行了java分级测试,但是完成的不太好,先看题目: 石家庄铁道大学选课管理系统 1.项目需求: 本项目所开发的学生选课系统完成学校对学生的选课信息的统计与管理,减少数据漏掉的情况,同时也节约人 ...

  4. cmd中实现代码雨的命令。。。

    颜色修改时不能使用十六进制数 @echo off title digitalrain color 0b setlocal ENABLEDELAYEDEXPANSION for /l %%i in (0 ...

  5. C++回调函数、静态函数、成员函数踩过的坑。

    C++回调函数.静态函数.成员函数踩过的坑. 明确一点即回调函数需要是静态函数.原因: 普通的C++成员函数都隐含了一个this指针作为参数,这样使得回调函数的参数和成员函数参数个数不匹配. 若不想使 ...

  6. 2、dubbo基础知识

    1.简介 2.dubbo架构 3.dubbo环境搭建 注意:cmd命令都是在bin目录的地址栏直接输入 xxx.cmd 4.配置dubbo-admin 步骤一: 步骤二: 步骤三: 步骤四: 步骤五: ...

  7. 关于MapReduce的测试

    题目:数据清洗以及结果展示 要求: Result文件数据说明: Ip:106.39.41.166,(城市) Date:10/Nov/2016:00:01:02 +0800,(日期) Day:10,(天 ...

  8. Java_GUI小游戏--FlappyBird 橡树鸟

    本文讲解的是一款来自独立游戏开发者Dong Nguyen所开发的游戏FlappyBird,也叫橡树鸟 四个类代码: package Gary; import java.awt.*; import ja ...

  9. HDU 5818 Joint Stacks ——(栈的操作模拟,优先队列)

    题意:有两个栈A和B,有3种操作:push,pop,merge.前两种都是栈的操作,最后一种表示的是如果“merge A B”,那么把B中的元素全部放到A中,且满足先入后出的栈原则. 分析:显然,我们 ...

  10. oracle取出所有表和视图

    select c.TABLE_NAME, d.COMMENTS, d.table_type, (select wmsys.wm_concat(a.column_name) from user_cons ...