Chinaunix首页 | 论坛 | 博客
  • 博客访问: 364923
  • 博文数量: 34
  • 博客积分: 2236
  • 博客等级: 大尉
  • 技术积分: 476
  • 用 户 组: 普通用户
  • 注册时间: 2006-02-25 14:36
文章分类

全部博文(34)

文章存档

2016年(2)

2014年(1)

2012年(2)

2011年(3)

2010年(3)

2009年(5)

2008年(9)

2007年(3)

2006年(6)

分类: 数据库开发技术

2009-08-09 09:52:42

条件:数据库系统中的whatsup库显示置疑,
      数据库缺省安装
      其对应的数据文件是:D:\whatsup\whatsup.mdf 
      其对应的日志文件是:D:\whatsup\whatsup.ldf
     
恢复步骤:
  --a.停止mssql服务,将whatsup.ldf和whatsup.mdf文件备份到其它目录下,
      将源目录下的whatsup.ldf文件改名为whatsup.bak.ldf;
  --b.启动mssql服务,在mssql管理控制台的local的sql的配置属性里选取服务器
      设置选单选取允许对系统目录直接进行修改;  
  --c.执行以下语句修改数据库的状态和关闭数据库:  
      use Master  
      go  
      update sysdatabases set status=32768 where name='whatsup'     --修改状态,設為緊急狀態
      go  
      shutdown with nowait                                          --停止数据库服务器  
      go  
      正常回显是:
     (所影响的行数为 1 行)
      服务器已按要求关闭。
      SQL Server 正在终止此进程。
     
  --d.在(COMMAND)命令行模式中通过下面的代码以安全模式重新启动SQL:  
      cd C:\Program Files\Microsoft SQL Server\MSSQL\Binn
      sqlservr -c -T3608 -T4022                                       --安全模式启动SQL SERVER
  --e.在查询分析器中执行以下语句来查看刚刚修改过状态的数据库状态:  
      select Name,Status from sysdatabases where Name='whatsup'      --结果应该是"32768",不然重回a操作。
  --f.执行以下代码新建日志文件:  
      dbcc traceon(3604)                                             --跟踪  
      dbcc rebuild_log('whatsup','D:\whatsup\whatsup.LDF')           --文件名要有全路径和扩展名
      正常回显是:
      警告: 数据库 'whatsup' 的日志已重建。已失去事务的一致性。应运行 DBCC CHECKDB 以验证物理一致性。
      将必须重置数据库选项,并且可能需要删除多余的日志文件。
      DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
  --g.将数据库置回正常状态:  
      update sysdatabases set status=0 where name='whatsup'
  --h.将数据库恢复为多用户模式:  
      sp_dboption 'whatsup', 'single user','false'                  ---('false'恢复多用户)
      Go                                                           
 这时进行数据库备份,备份后重启动服务器即可。
 
 如果还是不行,接着进行以下修复
  --i.将数据库改为单用户模式:  
      sp_dboption 'whatsup','single user','true'   
  --j.将数据库置回正常状态:  
      update sysdatabases set status=0 where name='whatsup'  
  --k.重新启动数据库后执行以下语句检查,执行以下语句修复数据库:  
      DBCC CHECKDB('whatsup',REPAIR_ALLOW_DATA_LOSS)
      #DBCC CHECKDB                                                 --如果执行完有错误用以下语句修复  
      #REPAIR_ALLOW_DATA_LOSS:是比较高级的修复方式  
      #REPAIR_FAST:是简单快速的修复方式

参考文章:
         
阅读(1344) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~