科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道SQL Server数据库崩溃后的恢复之法(2)

SQL Server数据库崩溃后的恢复之法(2)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

任何数据库系统都无法避免崩溃的状况,即使你使用了Clustered,双机热备……仍然无法完全根除系统中的单点故障,何况对于大部分用户来说,无法承受这样昂贵的硬件投资。所以,在系统崩溃的时候,如何恢复原有的宝贵数据就成为一个极其重要的问题了。 eQg;\\`T1 =P(` Z

作者:赛迪网技术社区 来源:赛迪网技术社区 2007年9月3日

关键字: 恢复 数据库 SQL Server SQL Server 各版本

  • 评论
  • 分享微博
  • 分享邮件
然后 update sysdatabases set status = 32768 where name = '' FqiDI+(9o  
 ko$zEv  
ww%<J`C<  
现在,祈求满天神佛的保佑吧,重新建立一个log文件。成功的机会还是相当大的,系统一般都会认可你新建立的日志。如果没有报告什么错误,现在就可以松一口气了。 zbN`ZR$*d8  
czhh)~.v7K  
GE-Jg$  
虽然数据是恢复了,可是别以为事情就算完成了,正在进行的事务肯定是丢失了,原来的数据也可能受到一些损坏。 \o,O!'.[  
^XQHW  
[JV@1Z  
先把SQL Server 重新启动一下,然后检查你的数据库吧。 uco~YxlDRF  
z8^\EPW)5  
\We_m sQ  
先设置成单用户模式,然后做 p ,h{&Y=  
MnoVJz6u  
za^5s|IZ>J  
[$DImMj"  
dbcc sp_dboption '', 'single user', 'true'DBCC CHECKDB('') wIN}%``P  
UGF I=wud  
FD)M}wC@Gv  
如果没有什么大问题就可以把数据库状态改回去了,记得别忘了把系统表的修改选项关掉。update sysdatabases set status = 28 where name = '' ,当然你的数据库状态可能不是这个,自己改为合适的值吧。也可以用 21W$c6M(H/  
/-_HS'Q{  
hY$c0y-  
ucpV%Yn3  
sp_resetstatusgosp_configure 'allow updates', 0reconfigure with overrideGo ?^ H'kp  
V1BA|"3C  
<AozJX7  
checkdb的时候可能报告有一些错误,这些错误的数据你可能就只好丢弃了。 vFBkLI{$5  
B}/I@VCd  
"!h+BBRmi  
checkdb有几种修复选项,自己看着用吧,不过最后你可能还是得REPAIR_ALLOW_DATA_LOSS,完成所有修复。 V= "/ k<  
8 q7<|SF(  
I)H">%BC  
chekcdb并不能完成所有的修复,我们需要更进一步的修复,用DBCC CHECKTABLE对每一个表做检查吧。 >Z]),"u  
5!||"`g+  
Q7)1G;"  
表的列表可以用sysobjects里面得到,把OBJECTPROPERTY是IsTable的全部找出来检查一下吧,这样能够基本上解决问题了,如果还报告错误,试着把数据select into到另一张表检查一下。 (l6W  
 7QvpI  
,<WOs  
这些都做完了之后,把所有索引、视图、存储过程、触发器等重新建立一下。DBCC DBREINDEX也许可以帮你一些忙。
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章