SqlServer日志文件損壞時(shí)恢復(fù)數(shù)據(jù)庫(kù)
創(chuàng)建用于恢復(fù)的數(shù)據(jù)庫(kù)當(dāng)SqlServer的日志文件損壞時(shí),如果數(shù)據(jù)文件完好(只有.mdf文件沒(méi)有.ldf文件),可以通過(guò)以下步驟來(lái)恢復(fù)數(shù)據(jù)庫(kù)。首先,需要?jiǎng)?chuàng)建一個(gè)用于恢復(fù)的數(shù)據(jù)庫(kù),這里取名為Anena(
創(chuàng)建用于恢復(fù)的數(shù)據(jù)庫(kù)
當(dāng)SqlServer的日志文件損壞時(shí),如果數(shù)據(jù)文件完好(只有.mdf文件沒(méi)有.ldf文件),可以通過(guò)以下步驟來(lái)恢復(fù)數(shù)據(jù)庫(kù)。首先,需要?jiǎng)?chuàng)建一個(gè)用于恢復(fù)的數(shù)據(jù)庫(kù),這里取名為Anena(與要恢復(fù)的數(shù)據(jù)庫(kù)文件同名)。在配置管理器中,中止數(shù)據(jù)庫(kù)服務(wù)。
覆蓋數(shù)據(jù)文件
接下來(lái),將剛剛創(chuàng)建的數(shù)據(jù)庫(kù)的.ldf文件刪除,并將要恢復(fù)的數(shù)據(jù)文件覆蓋掉剛創(chuàng)建的數(shù)據(jù)庫(kù)文件。然后啟動(dòng)數(shù)據(jù)庫(kù)服務(wù)器。
數(shù)據(jù)庫(kù)處于“恢復(fù)掛起”狀態(tài)
此時(shí)數(shù)據(jù)庫(kù)處于“恢復(fù)掛起”狀態(tài)。需要執(zhí)行以下語(yǔ)句,使數(shù)據(jù)庫(kù)“允許對(duì)系統(tǒng)目錄直接修改”:
```
use master
go
sp_configure 'allow updates', 1
go
reconfigure with override
go
```
設(shè)置緊急修復(fù)模式
將Anena數(shù)據(jù)庫(kù)設(shè)置為緊急修復(fù)模式,執(zhí)行以下更新語(yǔ)句:
```
update sysdatabases set status-32768 where dbidDB_ID('Anena')
```
重建數(shù)據(jù)庫(kù)日志文件
使用以下命令重建數(shù)據(jù)庫(kù)日志文件:
```
dbcc rebuild_log('pcard', 'G:date_備份date20150916Athena_log.ldf')
```
取消“允許對(duì)系統(tǒng)目錄直接修改”
恢復(fù)“允許對(duì)系統(tǒng)目錄直接修改”的設(shè)置,執(zhí)行以下語(yǔ)句:
```
use master
go
sp_configure 'allow updates', 0
go
reconfigure with override
go
```
通過(guò)以上步驟,可以在SqlServer日志文件損壞時(shí),僅有數(shù)據(jù)文件的情況下成功恢復(fù)數(shù)據(jù)庫(kù)。請(qǐng)注意,在進(jìn)行任何數(shù)據(jù)庫(kù)操作之前,務(wù)必先備份數(shù)據(jù),以防止意外情況的發(fā)生。