轉貼:
問題:
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'