设为首页 收藏本站
查看: 763|回复: 0

[经验分享] Sql server的灾难性恢复

[复制链接]

尚未签到

发表于 2018-10-18 07:42:30 | 显示全部楼层 |阅读模式
  如果需要你维护或者管理的sql server挂掉了,确实是一场灾难。
  到目前为止,我是历经数劫,总算都能全身而退----付出的代价是下决心上班前的晚上不要喝酒。
  如今总结一下,借larry的服务器储存,以备察看。
  灾难一:
  如果你嫌硬盘空间不够大(SCIS的一般也不会大到哪里去,也很少客户作RAID或者架DFS)。而你一时心血来潮,发现问题就是Log文件在生事,一气之下,直接将它删掉了---惨了,你制造了一起灾难。
  这时候你的数据库重新打开时,肯定处于置疑状态,面对只有一个mdf文件,这时候你通过附加等方式是不能成功修复的。那么请尝试如下方法:
  备份数据文件,然后按下面的步骤处理:
  1.新建一个同名的数据库(数据文件与原来的要一致)
  2.再停掉sql server(注意不要分离数据库)
  3.用原数据库的数据文件覆盖掉这个新建的数据库
  4.再重启sql server
  5.此时打开企业管理器时会出现置疑,先不管,执行下面的语句(注意修改其中的数据库名)
  6.完成后一般就可以访问数据库中的数据了,这时,数据库本身一般还要问题,解决办法是,利用
  数据库的脚本创建一个新的数据库,并将数据导进去就行了.
  USE MASTER
  GO
  SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE
  GO
  UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='置疑的数据库名'
  Go
  sp_dboption '置疑的数据库名', 'single user', 'true'
  Go
  DBCC CHECKDB('置疑的数据库名')
  Go
  update sysdatabases set status =28 where name='置疑的数据库名'
  Go
  sp_configure 'allow updates', 0 reconfigure with override
  Go
  sp_dboption '置疑的数据库名', 'single user', 'false'
  Go
  附:正确的删除日志文件的办法是要先分离数据库,然后你就可以直接删除日志文件后,通过附加mdf文件来恢复,从而产生新的日志文件。建议不要在设计数据库的时候限制日志文件的大小,否则很难面对其他灾难性恢复。
  灾难二:
  如果你将数据库中的某个很重要的表误删了,并且里面有很多数据。而你在删除之前没有备份----对于不熟悉的人来说,也是一场灾难。
  别着急。比如,你的数据库建立于2003-10-1,如果一直没有对该数据库用备份文件恢复过,则不需要任何其他条件即可寻找到丢失的数据,如果你在2003-12-1日用备份文件恢复过该数据库,则只要求你具备一个2003-12-1日后任何一个完整备份文件。
  1.对该数据库作一个专门的日志备份
  backup log dbName to disk='fileName'
  2.恢复一个之前的完整备份文件(如果数据库没有动过,则不需要这一步骤)
  restore database dbName from disk='fileName' with norecovery
  3.恢复最后一个日志备份即刚做的日志备份,指定恢复时间点到误操作之前的时刻
  restore log dbName from disk='fileName'
  with stopat='date_time'
  灾难三:
  我们对灾难二多一个架设,架设你对数据库用备份文件恢复过,又不具备一个完整备份文件----可能这个灾难不管怎样都会留下一些遗憾。
  这时候,我所采用的是只能借助第三方工具(也许sql下一版本会提供,但是一般ms不会把生意作绝的)。利用第三方工具LogExplorer来找到drop那个table的日志纪录,会自动产生create table 和insert values的.sql语句,事实证明,还是会存在一些遗憾,比如对于大的二进制对象,很多会被截断,造成一部分资料不能完整复员。
  灾难四:
  如果你的数据库服务器爆炸了---这才是真正的灾难。
  别着急,赶快寻找爆炸后的硬盘碎片,找一片比较锋利的,朝脖子上一抹就解决问题了。
  备注:往往删除文件后,可能我们会通过一些辅助工具修复硬盘上丢失的数据,但是对于上G的文件,应该成功恢复的可能性很小吧。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-622961-1-1.html 上篇帖子: SQL Server中临时表与表变量的区别 下篇帖子: 【Sql Server】3.管理数据库
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表