当前位置:七道奇文章资讯数据防范MSSQL防范
日期:2011-05-02 15:21:00  来源:本站整理

当SQLServer数据库崩溃时若何恢复?[MSSQL防范]

赞助商链接



  本文“当SQLServer数据库崩溃时若何恢复?[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
任何数据库系统都无法避免崩溃的情况,即便你利用了Clustered,双机热备……仍旧无法完好铲除系统中的单点弊端,何况关于大部份用户来说,无法承受这样高贵的硬件投资.所以,在系统崩溃的时刻,若何恢答复有的贵重数据就成为一个极端重要的问题了.

  在恢复的时刻,最抱负的情形就是你的数据文件和日记文件都无缺无损了,这样只需求sp_attach_db,把数据文件附加到新的数据库上便可,大概在停机的时刻把全部数据文件(一定要有master等)都copy到原有途径下也行,不过普通不举荐这样的做法,sp_attach_db对比好,固然麻烦很多.

  但是呢,普通数据库崩溃的时刻系统是未必能有时间把未完成的事件和脏页等写入磁盘的,这样的情形sp_attach_db就会失利.那么,寄盼望于DBA拟定了一个杰出的灾难恢复筹划吧.按照你的恢复筹划,复原最新的完好备份,增量备份大概事件日记备份,然后假如你的活动事件日记还能读得出来的话,恭喜你!你可以复原到崩溃前的状况.

   普通的单位都是没有专职的DBA的,假如没有可用的备份,更大概是近来一次备份的时间过于长远而招致不可承受的数据丧失,并且你的活动事件日记也处于不可用的状况,那就是最麻烦的情形了.

  不幸的很的是,普通数据库崩溃都是由于存储子系统惹起的,而这样的情形是几近不大概有可用的日记用于恢复的.

  那么就只好试一下这些筹划了.当然,是要求至少你的数据文件是存在的,如果数据文件、日记文件和备份都没有了的话,别找我,你可以到楼顶上去唱"神啊,救救我吧".

  首先,你可以试一下sp_attach_single_file_db,试着恢复一下你的数据文件,固然能恢复的大概性不大,不过假定这个数据库刚好履行了一个checkpoint的话,还是有大概成功的.

  假如你没有好到有摸彩票的手气,最重要的数据库没有像你期盼的那样attach上去,不要灰心,还是有别的筹划的.

  我们可以试侧重新成立一个log,先把数据库设置为emergency mode,sysdatabases的status为32768 就表示数据库处于此状况.
不过系统表是不能随便改的,设置一下先
  Use Master
  Go
  sp_configure 'allow updates', 1
  reconfigure with override
  Go
  然后
  update sysdatabases set status = 32768 where name = ''

  目前,恳求满天神佛的保佑吧,重新成立一个log文件.成功的机会还是相当大的,系统普通城市承认你新成立的日记.假如没有报告什么错误,目前便可以松一口吻了.

  固然数据是恢复了,但是别认为事情就算完成了,正在举行的事件必定是丧失了,本来的数据也大概遭到一些破坏.

  先把sql server 重新启动一下,然后查抄你的数据库吧.
  先设置成单用户情势,然后做dbcc
  sp_dboption '', 'single user', 'true'
  DBCC CHECKDB('')

  假如没有什么大问题便可以把数据库状况改回去了,记得别忘了把系统表的改正选项关掉.
update sysdatabases set status = 28 where name = '' --当然你的数据库状况大概不是这个,自己改成符合的值吧.也可以用sp_resetstatus
  go
  sp_configure 'allow updates', 0
  reconfigure with override
  Go

  checkdb的时刻大概报告有一些错误,这些错误的数据你大概就只好丢弃了.

  checkdb有几种修复选项,自己看着用吧,不过最后你大概还是得REPAIR_ALLOW_DATA_LOSS,完成全部修复.

  chekcdb并不能完成全部的修复,我们需求更进一步的修复,用DBCC CHECKTABLE对每一个表做查抄吧.

  表的列表可以用sysobjects里面得到,把OBJECTPROPERTY是IsTable的全部找出来查抄一下吧,这样可以基本上办理问题了,假如还报告错误,试着把数据select into到另一张表查抄一下.

  这些都做完了之后,把全部索引、视图、存储历程、触发器等重新成立一下.DBCC DBREINDEX也答应以帮你一些忙.

  上面提到的号令、对象在Books Online中均有具体阐明,请注意参看.
  以上是“当SQLServer数据库崩溃时若何恢复?[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • <b>当SQL Server数据库崩溃时若何恢复</b>
  • 当SQL Server数据库崩溃时若何恢复?
  • 当SQLServer数据库崩溃时若何恢复?
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .