sqlserver附加数据库错误823的解决方案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单位一台单机刷卡的机器,sql2000数据库,数据库名后面有“(置疑)”字样,程序无法使用。
从网上搜到方法:
解决办法:
在SQL-Server企业管理器中,新建同名数据库(这里假设为Test)后,停止数据库,把损坏的数据库文件Data.mdf和Test_log.LDF覆盖刚才新建数据库目录下的Data.mdf和
Test_log.LDF,同时删除Test_log.LDF文件;启动数据库服务,发现数据库名Test后面有“置疑”字样。不要紧,打开SQL自带查询分析器,分别执行如下SQL语句:
第一、
exec sp_configure 'allow updates',1 RECONFIGURE WITH OVERRIDE
第二、
update sysdatabases set status=32768 where name='数据库名'
第三、
DBCC REBUILD_LOG ('数据库名','D:\database\Test_Log.LDF')
--这个没执行成功!!
第四、
update sysdatabases set status=0 where name='数据库名'
第五、
restore database 数据库名WITH RECOVERY
第六、
exec sp_configure 'allow updates',0 RECONFIGURE WITH OVERRIDE
按照此方法操作,应该能修复数据库正常访问了。如果问题依然存在,最笨的一个方法就是新建另一个数据库,把原数据库(Test)各个表的数据导出到新建数据库表中。
============================================================
补充说明:用上面的六步把数据库置疑的问题解决了,但是数据库表里还有损坏的表(inf_gdscode),把坏表导出的时候也不成功。最后在查询分析器里运行:
USE nmgbt_hcxuexipos (数据库名)
GO
DBCC CHECKTABLE ('inf_gdscode',REPAIR_ALLOW_DATA_LOSS)
GO
前六步除第三步执行成功,数据库可以访问,但程序仍无法使用,在查询分析器中执行select * into abc from 任一表
无法执行,试过另外几个修复表的命令,无法执行,
就又建一个数据库,将全部数据导入,再将存储过程及视图生成sql语句后导入,删除原数据库,将新建的数据库命名为原数据库的名字,程序运行正常,问题解决。