
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文件的方法出现置疑之后处理不了、数据库置疑怎样解决等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)