MS SQL Server 数据库出现置疑状态问题的修复方法
时 间:2013-09-10 09:48:05
作 者:红尘如烟 ID:10768 城市:成都
摘 要:MS SQL Server 数据库出现置疑状态问题修复方法
正 文:
用户问题描述
一客户SQL Server数据库突然无法访问,在企业管理器中检查发现该数据库显示为“置疑”状态。
问题检查确认
将数据库文件 accdev_be.mdf 和日志文件 accdev_be_log.ldf 从生产服务器中复制出来,放到另外一台测试服务器中,进行数据库附加操作,出现错误9003,提示LSN(LSN即日志扫描号)无效。
预计可能的原因
该问题一般可能是由于服务器突然断电,或不稳定引起的突发异常,导致数据库文件损坏或者数据库文件和日志文件不匹配。
修复相关前提说明
这里修复均是在测试服务器上进行,只有最后修复完成后才将文件复制到生产服务器上进行恢复。
测试服务器上的初始环境应该是SQL Server 处于正常启动状态,企业管理器和查询分析器没有被打开。
本文中以如下数据库作为演示举例:
数据库名称: accdev_be
数据库文件名:accdev_be.mdf
日志文件名: accdev_be_log.ldf
具体修复步骤
1. 在打开SQL Server 企业管理器,新建一个同样名为 accdev_be 的数据库。
2. 这里新建数据库的时候,要注意数据库文件和日志文件的文件名,也要保持一致,这里我们为了不使用太长的路径名,以方便描述,因此直接放在了C盘根目录下。如图所示:
数据库文件名为: accdev_be 位置为:C:\accdev_be.MDF
日志文件名为: accdev_be_log 位置为:C:\accdev_be_log.LDF
3. 名称及位置确认无误后,点击【确定】按钮完成数据库的新建,然后关闭企业管理器。
4. 打开服务管理器,点击【停止】按钮来停掉服务SQL Server服务。
5. 到文件夹C:\ 中,用需要修复的 accdev_be.mdf文件替换掉新建数据库时生成的 accdev_be.MDF 文件,删掉accdev_be_log.LDF 文件。
b
6. 根据前面第4步,重新启动服务。
7. 打开查询分析器,在查询分析器的命令窗口中,输入以下命令脚本,然后按F5键或点击工具栏上的【执行查询】按钮执行:
go --修改系统配置项“允许对系统目录直接进行修改” exec sp_configure 'allow updates',1 go --使配置生效 reconfigure with override go --设置 accdev_be 为紧急修复模式 update sysdatabases set status=-32768 where dbid=db_id('accdev_be') go --重建数据库日志文件 dbcc rebuild_log('accdev_be','C:\accdev_be_log.ldf') go --检查数据库一致性 dbcc checkdb('accdev_be') go --设置数据库为正常状态 exec sp_dboption 'accdev_be','dbo use only','false' go --恢复系统配置项“允许对系统目录直接进行修改” exec sp_configure 'allow updates',0 go --使配置生效 reconfigure with override go |
8. 执行后仔细检查一下下面消息窗口中返回的消息,有没有提示出现错误,诸如“CHECKDB 发现了 0 个分配错误和 0 个一致性错误(在数据库 'accdev_be' 中)。”这样的消息表示是没有错误的。如果没有错误,那么恭喜,说明现在数据库已经被成功修复了!
9. 在查询分析器的对象浏览器窗口中(没有显示可按F8打开),选中服务器名称然后刷新。
10. 就可以看到 accdev_be 数据库在这里出现了(前面因为有问题无法访问,在这里也显示不出来)。打开几个数据表看一下,就会发现数据库已经能正常使用了。
11. 最后只需要通过“分离数据库”或“备份数据库”的方式,将数据库文件再传到正式的生产服务器上,进行“附加数据库”或“强制还原数据库”的操作,就全部大功告成了!
Access软件网官方交流QQ群 (群号:54525238) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- Access对子窗体数据进行批...(10.30)
- 最精简的组合框行来源数据快速输...(10.25)
- Access仿平台的多值选择器...(10.24)
- 【Access日期区间段查询】...(10.22)
- 【Access源码示例】VBA...(10.12)
- Access累乘示例,Acce...(10.09)
- 数值8.88,把整数8去掉,转...(10.08)
- 【Access自定义函数】一个...(09.30)
- 【Access选项卡示例】Ac...(09.09)
学习心得
最新文章
- Access系统自带的日期选择器不...(11.08)
- 分享一下Access工程中的acw...(11.07)
- Access快速开发平台--让有权...(11.04)
- Access快速开发平台--审批选...(11.01)
- ACCESS两张表先各自排序,然后...(10.31)
- Access对子窗体数据进行批量+...(10.30)
- SqlServer中如何用SQL命...(10.29)
- Access报表中的分组功能用代码...(10.28)
- 用Access计算库存结余的一个方...(10.26)
- 最精简的组合框行来源数据快速输入(...(10.25)