深爱那片海 发表于 2015-1-16 22:22:38

MSSQL编程:SQL Server数据库溃散怎样恢复

因此我们的方案中要构造这种逆操作。Event_type增加一种FLASHBACK_EVENT。这类操作形式与Query_Event相同,都是简单的SQL语句,只是包含了将数据恢复的操作。server|恢复|数据|数据库任何数据库体系都没法制止溃散的情况,即便你利用了Clustered,双机热备……仍旧没法完整肃除体系中的单点妨碍,况且关于年夜部分用户来讲,没法接受如许高贵的硬件投资。
  以是,在体系溃散的时分,怎样恢回复有的可贵数据就成为一个极为主要的成绩了。
  在恢复的时分,最幻想的情形就是你的数据文件和日记文件都无缺无损了,如许只必要sp_attach_db,把数据文件附加到新的数据库上便可,大概在停机的时分把一切数据文件(必定要有master等)都copy到原有路径下也行,不外一样平常不保举如许的做法,sp_attach_db对照好,固然贫苦很多。
  可是呢,一样平常数据库溃散的时分体系是一定能偶然间把未完成的事件和脏页等写进磁盘的,如许的情形sp_attach_db就会失利。那末,寄希冀于DBA制订了一个优秀的劫难恢复企图吧。依照你的恢复企图,复原最新的完整备份,增量备份大概事件日记备份,然后假如你的举动事件日记还能读得出来的话,祝贺你!你能够复原到溃散前的形态。
  一样平常的单元都是没有专职的DBA的,假如没有可用的备份,更多是比来一次备份的工夫过于长远而招致不成承受的数据丧失,并且你的举动事件日记也处于不成用的形态,那就是最贫苦的情形了。
  不幸的很的是,一样平常数据库溃散都是因为存储子体系引发的,而如许的情形是几近不成能有可用的日记用于恢复的。
  那末就只好试一下这些计划了。固然,是请求最少你的数据文件是存在的,如果数据文件、日记文件和备份都没有了的话,别找我,你能够到楼顶上往唱“神啊,救救我吧”。
  起首,你能够试一下sp_attach_single_file_db,试着恢复一下你的数据文件,固然能恢复的大概性不年夜,不外假设这个数据库恰好实行了一个checkpoint的话,仍是有大概乐成的。
  假如你没有好到有摸彩票的手气,最主要的数据库没有像你期盼的那样attach上往,不要泄气,仍是有其余计划的。
  我们能够试侧重新创建一个log,先把数据库设置为emergencymode,sysdatabases的status为32768就暗示数据库处于此形态。
  不外体系表是不克不及任意改的,设置一下先
  UseMaster
  Go
  sp_configureallowupdates,1
  reconfigurewithoverride
  Go
  然后
  updatesysdatabasessetstatus=32768wherename=
  如今,乞求满天神佛的保佑吧,从头创建一个log文件。乐成的时机仍是相称年夜的,体系一样平常城市承认你新创建的日记。假如没有呈报甚么毛病,如今就能够松一口吻了。
  固然数据是恢复了,但是别觉得事变就算完成了,正在举行的事件一定是丧失了,本来的数据也大概遭到一些破坏。
  先把SQLServer从头启动一下,然后反省你的数据库吧。
  先设置成单用户形式,然后做dbcc
  sp_dboption,singleuser,true
  DBCCCHECKDB()
  假如没有甚么年夜成绩就能够把数据库形态改归去了,记得别忘了把体系表的修正选项关失落。
  updatesysdatabasessetstatus=28wherename=
  --固然你的数据库形态大概不是这个,本人改成符合的值吧。也能够用sp_resetstatus
  go
  sp_configureallowupdates,0
  reconfigurewithoverride
  Go
  checkdb的时分大概呈报有一些毛病,这些毛病的数据你大概就只好抛弃了。
  checkdb有几种修复选项,本人看着用吧,不外最初你大概仍是得用REPAIR_ALLOW_DATA_LOSS,完成一切修复。
  chekcdb其实不能完成一切的修复,我们必要更进一步的修复,用DBCCCHECKTABLE对每个表做反省吧。
  表的列表能够用sysobjects内里失掉,把OBJECTPROPERTY是IsTable的全体找出来反省一下吧,如许可以基础上办理成绩了,假如还呈报毛病,试着把数据selectinto到另外一张表反省一下。
  这些都做完了以后,把一切索引、视图、存储历程、触发器等从头创建一下。DBCCDBREINDEX大概能够帮你一些忙。
  然后,就能够向boss吹捧一下你的丰功伟业,特地小小的提一下加薪的请求,假如(很有大概)不未遂的话,也只好回家睡觉往:(
  记得下次别忘了做好备份哦~
  下面提到的命令、工具在BooksOnline中均有具体申明,请注重参看。
其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。

海妖 发表于 2015-1-19 09:43:30

对递归类的树遍历很有帮助。个人感觉这个真是太棒了!阅读清晰,非常有时代感。

简单生活 发表于 2015-1-25 09:38:14

相信各位对数据库和怎么样学习数据库都有一些经验和看法,也会有人走了一些弯路总结出自己的经验来,希望大家能把各自的看法和经验拿出来分享,给别人一份帮助,给自己一份快乐

若相依 发表于 2015-2-2 20:55:19

对于数据库来说,查询是数据库的灵魂,那么SQL查询效率究竟效率如何呢?下文将带对SQL查询的相关问题进行讨论,供您参考。

山那边是海 发表于 2015-2-8 06:14:42

从底层原理到表层引用,书籍多的很。个人认为没有什么那本书好?这样的说法。主要看和个人的学习方法是否适合。

愤怒的大鸟 发表于 2015-2-24 19:35:18

以前的DTS轻盈简单。但是现在的SSIS虽然功能强大了很多,但是总是让人感觉太麻烦。看看论坛中询问SSIS的贴子就知道。做的功能太强大了,往往会有很多用户不会用了

再见西城 发表于 2015-3-7 13:14:21

换言之,只有在不断的失败中尝试成功,而关于失败的总结却是很少的

灵魂腐蚀 发表于 2015-3-15 06:45:47

对于数据库来说,查询是数据库的灵魂,那么SQL查询效率究竟效率如何呢?下文将带对SQL查询的相关问题进行讨论,供您参考。

变相怪杰 发表于 2015-3-21 20:44:41

如果我们从集合论(关系代数)的角度来看,一张数据库的表就是一组数据元的关系,而每个SQL语句会改变一种或数种关系,从而产生出新的数据元的关系(即产生新的表)。
页: [1]
查看完整版本: MSSQL编程:SQL Server数据库溃散怎样恢复