sql 2000 数据库附加失败 提示823

sql 2000 数据库附加失败 提示823,第1张

sqlserver附加数据库错误823的解决方案2008-10-13 15:06sqlserver附加数据库错误823的解决方案一、SQL-Server附加数据库时失败。

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

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

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

错误 823

严重级别 24

消息正文

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

解释

Microsoft SQL Server 在对某设备进行读或写请求时遇到 I/O 错误。该错误通常表明磁盘问题。但是,错误日志中在错误 823 之前记录的其它核心消息应指出涉及了哪个设备。

3、解决办法:

在SQL-Server企业管理器中,新建同名数据库(这里假设为Test)后,停止数据库,把损坏的数据库文件Datamdf和Test_logLDF覆盖刚才新建数据库目录下的Datamdf和Test_logLDF,同时删除Test_logLDF文件;启动数据库服务,发现数据库名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_LogLDF') / 重建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

你用的什么版本的数据库?确定和你客户发给你的数据库文件是一个版本的数据库么

一个版本的一般是不会提示:所指定的文件不是有效的SQL SERVER文件 这个错误的。。他就给你发来一个mdf的文件是么。。ldf没有么

企业管理器--右键suspect的数据库--所有任务--分离数据库

然后备份你的suspect数据库的文件,再按下面的步骤处理:

1新建一个同名的数据库

2再停掉sql server

3用suspect数据库的文件覆盖掉这个新建的同名数据库

4再重启sql server

5此时打开企业管理器时新建的同名数据库会出现置疑,先不管,执行下面的语句(注意修改其中的数据库名)

USE MASTER

GO

SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE

GO

UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='his222'

Go

sp_dboption 'test', 'single user', 'true'

Go

DBCC CHECKDB('test')

Go

update sysdatabases set status =28 where name='test'

Go

sp_configure 'allow updates', 0 reconfigure with override

Go

sp_dboption 'test', 'single user', 'false'

Go

6完成后一般就可以访问数据库中的数据了,这时,数据库本身一般还要问题,解决办法是,利用

数据库的脚本创建一个新的数据库,并将数据导进去就行了

如果这样改不加数据库状态,你就把数据库导成一个新库来代替旧库吧

企业管理器--右键你的数据库--所有任务--导出数据

 --目标标数据库选择新建

 --选择"在两个sql数据库之间复制对象和数据"

 --把"包含扩展属性"选上,其他的根据需要选择

 --最后完成

步骤1:

创建一个新的数据库,命名为原来数据库的名字。

步骤2:

停止SQL

Server

步骤3:

把老数据库的MDF文件替换新数据库的相应的MDF文件,并把LDF文件删除。

步骤4:

重新启动SQL

Server服务,然后运行如下命令:

Use

Maste

Go

sp_configure

'allow

updates',

1

reconfigure

with

override

Go

begin

tran

update

sysdatabases

set

status

=

32768

where

name

=

'db_name'

--Verify

one

row

is

updated

before

committing

commit

tran

步骤5:

停止SQL然后重新启动SQL

Server服务,然后运行如下命令:

DBCC TRACEON(3604)

DBCC REBUILD_LOG('db_name','c:\mssql7\data\dbxxx_3ldf')

Go

步骤6:

停止SQL然后重新启动SQL

Server服务,然后运行:

use

master

update

sysdatabases

set

status

=

8

where

name

=

'db_name'

Go

sp_configue

'allow

updates',

0

reconfigure

with

override

go

步骤7:

运行dbcc

checkdb(db_name)

检查数据库的完整性

以上就是关于sql 2000 数据库附加失败 提示823全部的内容,包括:sql 2000 数据库附加失败 提示823、本人遇见到一个很麻烦的SQL数据库,附加不了,用替换mdf文件的方法出现置疑之后处理不了、数据库置疑怎样解决等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9859655.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-02
下一篇2023-05-02

发表评论

登录后才能评论

评论列表(0条)

    保存