今天主要讲一下sql server崩溃时的正确恢复方案。在实际运行中,数据库系统无法避免SQL Server数据库崩溃,即使你使用集群化、双机热备份& hellip& hellip仍然无法彻底根除系统中的单点故障。
更何况,对于大部分用户来说,他们无法承受如此昂贵的硬件投入。因此,当系统崩溃时,如何恢复原来有价值的数据成为一个极其重要的问题。
在恢复的时候,最理想的情况是你的数据文件和日志文件完好无损,那么你只需要sp_attach_db把数据文件附加到新的数据库,或者把所有的数据文件复制过来(一定要有master等。)在停机期间恢复到原始路径。但是,通常不建议这样做。sp_attach_db比较好,虽然麻烦。
但是,一般情况下,当SQL Server崩溃时,系统可能没有时间将未完成的事务和脏页写入磁盘,因此sp_attach_db会失败。然后,让我们希望DBA已经制定了一个好的灾难恢复计划。根据你的恢复计划,恢复最新的完全备份,增量备份或者事务日志备份,然后如果你的活动事务日志还能被读取,恭喜你!可以恢复到崩溃前的状态。
一般来说,所有组织中都没有全职DBA。如果没有可用备份,更有可能是上次备份时间过长,数据丢失无法接受。而且,您的活动事务日志处于不可用状态,这是最麻烦的情况。
不幸的是,大多数SQL Server崩溃都是由存储子系统引起的,并且几乎不可能有可用的日志来进行恢复。
那么我们必须尝试这些方案。当然,至少要求您的数据文件存在。如果数据文件、日志文件和备份都不见了,不要打电话给我。你可以去屋顶唱“哦,上帝,救救我”。
首先你可以试试sp_attach_single_file_db,尝试恢复你的数据文件。虽然不太可能恢复,但如果数据库只是执行一个检查点,仍然可能成功。
如果你运气不好碰不到抽奖,最重要的数据库没有如你所料附上,也不要气馁,还有别的打算。
我们可以尝试重建一个日志,先将数据库设置为紧急模式,sysdatabases的状态是32768,也就是说数据库处于这种状态。
但是,系统表是不能随便改的。先设置好。
UseMasterGosp_configure'allowupdates',1reconfigurewithoverrideGo然后
updatesysdatabasessetstatus=32768wherename=''现在,祈求所有神佛的加持,重新建立日志档案。成功的几率还是挺大的,系统一般会认可你新建立的日志。如果没有错误报告,您现在可以松一口气了。
虽然数据已经恢复了,但是不要以为事情就算完了,正在进行的交易就一定会丢失,原始数据也有可能被破坏。
首先重新启动SQL Server,然后检查您的数据库。
首先将其设置为单用户模式,然后执行
dbccsp_dboption'','singleuser','true'DBCCCHECKDB('')如果没有大问题,可以把数据库状态改回来。记得关闭系统表的修改选项。Update databases set status = 28,其中name =“”——当然,您的数据库状态可能不是这样,所以您可以自己将它更改为一个合适的值。您也可以使用sp _ resetstatus go sp _ configure '允许更新'。当0使用override go check db重新配置时,可能会报告一些错误,您可能必须丢弃这些错误数据。
Checkdb有几个修复选项。自己使用它们,但最后可能还是要修复_ALLOW_DATA_LOSS才能完成所有的修复。
KC chekcdb无法完成所有修复。我们需要进一步修理。用DBCC检查表检查每一张桌子。
表的列表可以通过sysobjects获得。找出所有属性为IsTable的对象并检查它。这样就基本解决问题了。如果您仍然报告错误,请尝试将数据选择到另一个表中并检查它。
完成所有这些后,重新构建所有的索引、视图、存储过程、触发器等。Dbcdbreindex或许能帮到你。上述命令和对象在联机丛书中有详细描述,请参考。
以上相关内容是对SQL Server崩溃时如何恢复的介绍。希望你能有所收获。
关键词:SQL Server
优侠库网站每天提供最新最热门的安卓手机软件、游戏下载、分享热门手游资讯攻略教程、手机软件教程步骤,专注安卓手机游戏软件下载。本文链接:http://www.123down.cn/gonglue/227346.html