转贴:
问题:
sql2000数据的附加时出错:
错误 3624
location:recovery.c:1996
express:curr->lon_length>0
spdi:51
process id:768
最后提示附加失败
服务器: 消息 5105,级别 16,状态 4,行 1
设备激活错误。物理文件名 'f:/database/fdzz1204_data.ldf' 可能有误。
解决:
新建一同名数据库(文件名,文件组都和原来的一样),然后停止数据库服务,用原来文件替换新建的数据库文件,启动数据库,该数据库被设未suspect
然后把数据库改成紧急模式:
sp_configure 'allow', 1
reconfigure with override
update sysdatabases set status = 32768 where name = '数据库名'
把ldf文件改名,再执行
dbcc rebuild_log ('数据库名', 'e:/fdzz/database/fdzz1204_log.ldf' )
恢复数据库紧急模式
update sysdatabases set status = 0 where name = '数据库名'
执行
restore database 数据库名 with recovery
sp_configure 'allow', 0
reconfigure with override
然后用dbcc checkdb ('数据库名')看看有没有错误
如果上面还是不行,试试把数据库设为紧急模式,应该可以看到数据了,在把数据导出到一个新的数据库
1.新建一个同名的数据库(数据文件与原来的要一致)
2.再停掉sql server(注意不要分离数据库)
3.用原数据库的数据文件覆盖掉这个新建的数据库
4.再重启sql server
5.此时打开企业管理器时会出现置疑,先不管,执行下面的语句(注意修改其中的数据库名)
6.完成后一般就可以访问数据库中的数据了,这时,数据库本身一般还要问题,解决办法是,利用
数据库的脚本创建一个新的数据库,并将数据导进去就行了.
use master
go
sp_configure 'allow', 1
reconfigure with override
go
update sysdatabases set status = 32768 where name = '置疑数据库名'
go
--先删除以前的日志文件
dbcc rebuild_log ('置疑数据库名', '置疑数据库日志文件存放位置' )
go
update sysdatabases set status = 0 where name = '置疑数据库名'
--执行
restore database project with recovery
go
sp_configure 'allow', 0
reconfigure with override
go
dbcc checkdb ('置疑数据库名')--看看有没有错误
或
use master
go
sp_configure 'allow updates',1 reconfigure with override
go
update sysdatabases set status =32768 where name='置疑的数据库名'
go
sp_dboption '置疑的数据库名', 'single user', 'true'
go
dbcc checkdb('置疑的数据库名')
go
update sysdatabases set status =28 where name='置疑的数据库名'
go
sp_configure 'allow updates', 0 reconfigure with override
go
sp_dboption '置疑的数据库名', 'single user', 'false'
新闻热点
疑难解答