码迷,mamicode.com
首页 > 数据库 > 详细

记录SQL Server2008日志文件损坏的恢复过程

时间:2015-07-07 10:46:49      阅读:291      评论:0      收藏:0      [点我收藏+]

标签:

记录SQL Server2008日志文件损坏的恢复过程:

环境:系统Windows Server2003

         数据库SQL Server2008

故障原因:通过mstsc链接同一服务器时,用户界面不一致。决定重启服务器,未正确关闭应用程序的情况下(程序在访问数据库),导致数据库日志文件损坏,自然也就无法访问mdf文件!(都是微软自家的产品,重启服务器为什么不能检查数据库的状态,将数据库设置在安全状态后在重启呢??所以,要养成良好的习惯。关闭现有数据库链接,再重启服务器)

故障表现:无法访问数据文件,就像下面JD_2数据库一样。

                                                      技术分享

解决方案:

1:将数据库JD_2删除、或者分离(这里可能会提示无法删除或分离数据库,可以重启对应的数据库实例后再次尝试)

2:新建数据库,日志文件和数据文件名称和要恢复对应文件一样命名。

3:将新建的数据库设置为脱机模式,找到新建数据库的物理路径,将要恢复的mdf文件拷贝覆盖现有的mdf文件。

4:设置数据库为联机模式,刷新数据库,可以看到并没有什么卵用。

5:执行alter database JD_2 set emergency  将数据库设置为紧急模式。

执行:

use master 

declare @databasename varchar(255) 

set @databasename=‘JD_2‘ 
                                                                 
ALTER DATABASE WisdomAgriculturePlatform SET SINGLE_USER   //将目标数据库置为单用户状态 

dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS) 

dbcc checkdb(@databasename,REPAIR_REBUILD) 

ALTER DATABASE WisdomAgriculturePlatform SET MULTI_USER //将目标数据库置为多用户状态 

6:刷新后数据库处于紧急模式,数据基本恢复。当前数据局处于紧急模式,无法对数据库备份。所以我们要恢复紧急模式为正常模式

                                                               技术分享

7:执行 select * from sys.master_files 查看数据库基本信息和状态信息

8:执行 select * from sysdatabases 查看所有数据库的信息如下:

   Status状态码含义:http://blog.csdn.net/nemo2011/article/details/9233777

 

                                        技术分享

执行:

方案1:

sp_configure ‘allow updates‘,1
reconfigure with override
update sysdatabases set status=0 where name=‘JD_New‘

更改数据库状态码,提示不允许更改=>sql server2008不支持对系统表的修改

方案2:

对于正常未损坏的数据库可以使用

ALTER DATABASE dbname SET EMERGENCY 

ALTER DATABASE dbname SET ONLINE

在紧急模式和普通模式间切换。但是对于损坏过的数据,经验证此方法行不通。

参考了一些网上的办法,都没能解决问题!请朋友不吝赐教~~

 

 

记录SQL Server2008日志文件损坏的恢复过程

标签:

原文地址:http://www.cnblogs.com/foreveryt/p/4626113.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!