只有mdf文件的數(shù)據(jù)庫(kù)附加失敗的修復(fù)
附加時(shí)報(bào)如下錯(cuò)誤:
服務(wù)器: 消息 1813,級(jí)別 16,狀態(tài) 2,行 1
未能打開新數(shù)據(jù)庫(kù) 'test'。CREATE DATABASE 將終止。
設(shè)備激活錯(cuò)誤。物理文件名 "d:\data\test_log.LDF' 可能有誤。
步驟:
A、用“企業(yè)管理器”新建一個(gè)同名的數(shù)據(jù)??梢孕薷哪J(rèn)路徑,為表述方便,我使用D:\data\,數(shù)據(jù)文件名test.mdf,日志文件名test_log.ldf
B、停止SQL服務(wù)
C、刪除test_log.ldf文件,將新建的test.mdf文件用舊的test.mdf文件替換。
D、啟動(dòng)SQL服務(wù)。進(jìn)入企業(yè)管理器后發(fā)現(xiàn)test數(shù)據(jù)顯示為“置疑”,此后保證無(wú)人連接上此數(shù)據(jù)庫(kù),并不做任何操作。
E、設(shè)置test數(shù)據(jù)庫(kù)允許直接操作系統(tǒng)表。此操作可以在SQL Server Enterprise Manager里面選擇數(shù)據(jù)庫(kù)服務(wù)器,按右鍵,選擇“屬性”,在“服務(wù)器設(shè)置”頁(yè)面中將“允許對(duì)系統(tǒng)目錄直接修改”一項(xiàng)選中。也可以使用如下語(yǔ)句來(lái)實(shí)現(xiàn)。我在實(shí)際操作的時(shí)候沒(méi)有使用命令,命令方式大家可以自己測(cè)試 ^_^
復(fù)制代碼 代碼如下:
use master
go
sp_configure 'allow updates',1
go
reconfigure with override
go
F、設(shè)置test數(shù)據(jù)庫(kù)為緊急修復(fù)模式。在查詢分析器中執(zhí)行如下語(yǔ)句:update sysdatabases set status=-32768 where dbid=DB_ID('test')
復(fù)制代碼執(zhí)行后在企業(yè)管理器中刷新后會(huì)發(fā)現(xiàn)ttdb數(shù)據(jù)庫(kù)顯示為“只讀\置疑\脫機(jī)\緊急模式”。可以看到數(shù)據(jù)庫(kù)里面的表,但是僅僅有系統(tǒng)表。
G、重建數(shù)據(jù)庫(kù)日志文件。在查詢分析器中執(zhí)行如下語(yǔ)句:
復(fù)制代碼 代碼如下:
dbcc rebuild_log('test','d:\Data\test_log.ldf')
執(zhí)行之前必須退出企業(yè)管理器,并且沒(méi)有人連接些數(shù)據(jù)庫(kù)。否則會(huì)報(bào)如下錯(cuò)誤:
服務(wù)器: 消息 5030,級(jí)別 16,狀態(tài) 1,行 1
未能排它地鎖定數(shù)據(jù)庫(kù)以執(zhí)行該操作。
DBCC 執(zhí)行完畢。如果 DBCC 輸出了錯(cuò)誤信息,請(qǐng)與系統(tǒng)管理員聯(lián)系。
正常的消息:
警告: 數(shù)據(jù)庫(kù) 'test' 的日志已重建。已失去事務(wù)的一致性。應(yīng)運(yùn)行 DBCC CHECKDB 以驗(yàn)證物理一致性。將必須重置數(shù)據(jù)庫(kù)選項(xiàng),并且可能需要?jiǎng)h除多余的日志文件。
DBCC 執(zhí)行完畢。如果 DBCC 輸出了錯(cuò)誤信息,請(qǐng)與系統(tǒng)管理員聯(lián)系。
此時(shí)打開在SQL Server Enterprise Manager里面會(huì)看到數(shù)據(jù)庫(kù)的狀態(tài)為“只供DBO使用”??梢栽L問(wèn)數(shù)據(jù)庫(kù)里面的用戶表了。
H、驗(yàn)證數(shù)據(jù)庫(kù)一致性(可省略,不過(guò)我忠實(shí)地執(zhí)行了^_^),查詢分析器中執(zhí)行:
復(fù)制代碼 代碼如下:
dbcc checkdb('test')
報(bào)出了每個(gè)表的執(zhí)行情況后,最后報(bào):
CHECKDB 發(fā)現(xiàn)了 0 個(gè)分配錯(cuò)誤和 0 個(gè)一致性錯(cuò)誤(在數(shù)據(jù)庫(kù) 'test' 中)。
DBCC 執(zhí)行完畢。如果 DBCC 輸出了錯(cuò)誤信息,請(qǐng)與系統(tǒng)管理員聯(lián)系。
I、設(shè)置數(shù)據(jù)庫(kù)為正常狀態(tài)。執(zhí)行語(yǔ)句:
復(fù)制代碼 代碼如下:
sp_dboption 'test','dbo use only','false'
走到這一步,如果沒(méi)有報(bào)錯(cuò),已經(jīng)可以長(zhǎng)長(zhǎng)舒一口氣了,去喝口水吧。:P
J、最后一步,我們要將步驟E中設(shè)置的“允許對(duì)系統(tǒng)目錄直接修改”一項(xiàng)恢復(fù)。怎么做當(dāng)然不用再多說(shuō)啦。也可以執(zhí)行語(yǔ)句:
復(fù)制代碼 代碼如下:
sp_configure 'allow updates',0
go
reconfigure with override
go
您可能感興趣的文章:- SQLServer2005 沒(méi)有日志文件(*.ldf) 只有數(shù)據(jù)文件(*.mdf) 恢復(fù)數(shù)據(jù)庫(kù)的方法
- 恢復(fù).mdf 數(shù)據(jù)庫(kù)步驟
- sqlserver只有MDF文件恢復(fù)數(shù)據(jù)庫(kù)的方法
- mssql server .ldf和.mdf的文件附加數(shù)據(jù)庫(kù)的sql語(yǔ)句
- MDF文件在SQL Server中的恢復(fù)技術(shù)