数据库置疑_及修复

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Sqlserver 数据库823错误(置疑)的解决方案

一、SQL-Server数据库置疑:

1、异常情况:服务器在正常运行的情况下突然断电,导致数据库文件损坏,具体表现是:数据库名后面有“(置疑)”字样。

2、异常分析:关于823错误的SQL-SERVER 中的帮助:

================================

错误823

严重级别24

消息正文

在文件%4的偏移量,%3的索引,%2过程中,检测到I/O 错误%1。

解决办法:

准备工作:

①停止sql server服务,找到置疑库的mdf,ldf文件复制出来,这里假设叫kmcyV51_data.mdf(ldf),并与企业管理器中删除该数据库;

②用KM安装包下db_setup.exe建立一个空库(名称和质疑数据库名一致kmcyv51),选择服务器节点,右键停止数据库服务,把损坏的数据库文件kmcyv51_Data.mdf覆盖刚才新建数据库目录下,同时删除kmcy_v51_log.LDF文件;右键节点启动数据库服务,发现数据库名kmcyv51后面有“置疑”字样。

打开SQL自带查询分析器,在master数据库分别执行如下SQL语句:

(注意更改数据库名)

use master

exec sp_configure 'allow updates',1 RECONFIGURE WITH OVERRIDE /* 打开修改系统表开关*/

update sysdatabases set status=32768 where name = 'kmcyv51' /* 设置紧急状态*/

sp_dboption 'kmcyv51', 'single user', 'true' /*启用单用户*/

DBCC REBUILD_LOG ('kmcyv51','E:\km软件_data\KmcyV51_Log.LDF') /* 重建LDF文件*/

update sysdatabases set status=28 where name= 'kmcyv51' /* 设置正常状态*/

--或者

update sysdatabases set status = 16 where name = 'kmcyv51'

RESTORE DATABASE kmcyv51 WITH RECOVERY /* 恢复数据库*/

exec sp_configure 'allow updates',0 RECONFIGURE WITH OVERRIDE /* 关闭修改系统表开关*/

sp_dboption 'kmcyv51', 'single user', 'false' /* 关闭单用户模式*/

如果问题依然存在,最笨的一个方法就是新建另一个数据库,把

原数据库各个表的数据导出到新建数据库表中。

下面是修复语句:

补充说明:用上面的六步把数据库置疑的问题解决了,但是数据库表里还有损坏的表,下面是简单修复语句

修复数据库:

在查询分析器里运行:

---检查数据库,dbname 数据库名,注意更换

use kmcyv51

dbcc checkdb --检查表:checktable(’表名’)

如果在最后结果有这样的提示:

CHECKDB 发现了x个分配错误和x 个一致性错误(在数据库'dbname' 中)

使用下面语句简单修复:

sp_dboption 'kmcyv51', 'single user', 'true'

--修复库:下面三句可以反复执行

DBCC CHECKDB ('kmcyv51',repair_fast) --快速修复

dbcc checkdb ('kmcyv51',repair_rebuild) --重建修复

dbcc checkdb ('kmcyv51',repair_allow_data_loss) --有损坏修复命令

use kmcyv51

--修复表

DBCC checktable ('tab_name',repair_fast)

DBCC CHECKTable ('tab_name',repair_rebuild)

DBCC CHECKTable ('tab_name',repair_allow_data_loss)

sp_dboption 'kmcyv51', 'single user', 'false'

再次检查数据库

Use kmcyv51

Dbcc checkdb

如果修复后还存在x个分配错误和x 个一致性错误无法修复,只能找专业的机构修复!

建议将其中档案数据导出,新建一个数据库,将资料导入!

相关文档
最新文档