过期罐头电脑论坛-win7、win10雨人系统下载

过期罐头电脑论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
雨人系统 过期罐头 视频编辑软件 电脑维修 win7系统下载 win10系统下载
查看: 672|回复: 0
收起左侧

如何修复崩溃的数据库

[复制链接]
发表于 2012-3-23 07:25:12 | 显示全部楼层 |阅读模式
发贴请勿包含网站外链(直接下载地址和网盘除外),屡犯者将封禁ID、网址永久屏蔽,www.gqgtpc.com感谢支持!
任何数据库系统都无法避免崩溃的状况,即使你使用了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也许可以帮你一些忙。

楼主热帖
[Windows7] 在Windows 7系统下安装打印机驱动程序
[闲聊杂侃] 肠胃不好千万别吃这10样
[闲聊杂侃] 家电使用常识 4种电器切勿放进卧室
[闲聊杂侃] 患上了喉炎在日常生活注意事项
[系统应用经验技巧] 排除“PowerPoint出现错误,请保存当
[闲聊杂侃] 美女摄影师奇想 与猪裸拍
[系统应用经验技巧] 4K 不对齐,后果很严重
[电脑组装维修] 四***宝应付主板常见故障
[系统应用经验技巧] 有电脑,没宽带,也能上网
[闲聊杂侃] 桶装矿泉水为何不宜烧开喝?

您需要登录后才可以回帖 登录 | 注册

本版积分规则

win7 64位旗舰版下载|win10系统下载|win7旗舰版|联系我们|网站地图|

GMT+8, 2016-12-8 00:23 , Processed in 0.355898 second(s), 25 queries .

官方免责声明:本站内容来自网友和互联网.若侵犯到您的版权.请致信联系,我们将第一时间删除相关内容!

Powered by Discuz!

过期罐头电脑论坛

win7旗舰版_windows10

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