如何恢復 修復MS SQL資料庫的MDF檔案

2021-04-21 05:24:37 字數 4334 閱讀 5000

如何恢復/修復ms sql資料庫的mdf檔案

如果備份的資料庫有

2個檔案,分別是

.ldf

和.mdf

,開啟企業管理器,在例項上右擊

---所有任務

--附加資料庫,然後選擇那個

.mdf

檔案,就可以了。

或者在查詢分析器中輸入:

sp_attach_db "

資料庫名稱

","路徑

/檔名

.ldf","路徑/

檔名.mdf"

sql server

資料庫備份有兩種方式,一種是使用

backup database

將資料庫檔案備份出去,另外一種就是直接拷貝資料庫檔案

mdf和日誌檔案

ldf的方式。下面將主要討論一下後者的備份與恢復。本文假定您能熟練使用

sql server enterprise manager(sql server

企業管理器)和

sql server quwey analyser(sql server

查詢分析器

)

1、正常的備份、恢復方式

正常方式下,我們要備份乙個資料庫,首先要先將該資料庫從執行的資料伺服器中斷開,或者停掉整個資料庫伺服器,然後複製檔案。

卸下資料庫的命令:

sp_detach_db

資料庫名

連線資料庫的命令:

sp_attach_db

或者sp_attach_single_file_db

s_attach_db [@dbname =] 'dbname', [@filename1 =] 'filename_n' [,...16]

sp_attach_single_file_db [@dbname =] 'dbname', [@physname =] 'physical_name'

使用此方法可以正確恢復

sql sever7.0

和sql server 2000

的資料庫檔案,要點是備份的時候一定要將

mdf和

ldf兩個檔案都備份下來,

mdf檔案是資料庫資料檔案,

ldf是資料庫日誌檔案。

例子:假設資料庫為

test

,其資料檔案為

test_data.mdf

,日誌檔案為

test_log.ldf

。下面我們討論一下如何備份、恢復該資料庫。

卸下資料庫:

sp_detach_db 'test'

連線資料庫:

sp_attach_db 'test','c:/program files/microsoft sql server/mssql/data/test_data.mdf','c:/program files/microsoft sql server/mssql/data/test_log.ldf'

sp_attach_single_file_db 'test','c:/program files/microsoft sql server/mssql/data/test_data.mdf'

2、只有

mdf檔案的恢復技術

由於種種原因,我們如果當時僅僅備份了

mdf檔案,那麼恢復起來就是一件很麻煩的事情了。

如果您的

mdf檔案是當前資料庫產生的,那麼很僥倖,也許你使用

sp_attach_db

或者sp_attach_single_file_db

可以恢復資料庫,但是會出現類似下面的提示資訊

裝置啟用錯誤。物理檔名

'c:/program files/microsoft sql server/mssql/data/test_log.ldf'

可能有誤。

已建立名為

'c:/program files/microsoft sql server/mssql/data/test_log.ldf'

的新日誌檔案。

但是,如果您的資料庫檔案是從其他計算機上覆制過來的,那麼很不幸,也許上述辦法就行不通了。你也許會得到類似下面的錯誤資訊

伺服器:訊息

1813

,級別16

,狀態2,行1

未能開啟新資料庫

'test'

。create database

將終止。

裝置啟用錯誤。物理檔名

'd:/test_log.ldf'

可能有誤。

怎麼辦呢

?別著急,下面我們舉例說明恢復辦法。

a.我們使用預設方式建立乙個供恢復使用的資料庫(如

test)

。可以在

sql server enterprise manager

裡面建立。

b.停掉資料庫伺服器。

c.將剛才生成的資料庫的日誌檔案

test_log.ldf

刪除,用要恢復的資料庫

mdf檔案覆蓋剛才生成的資料庫資料檔案

test_data.mdf。d.

啟動資料庫伺服器。此時會看到資料庫

test

的狀態為「置疑

」。這時候不能對此資料庫進行任何操作。

e.設定資料庫允許直接作業系統表。此操作可以在

sql server enterprise manager

裡面選擇資料庫伺服器,按右鍵,選擇「屬性

」,在「伺服器設定

」頁面中將

「允許對系統目錄直接修改

」一項選中。也可以使用如下語句來實現。

use master

go sp_configure 'allow updates',1

go reconfigure with override

go

f.設定

test

為緊急修復模式

update sysdatabases set status=-32768 where dbid=db_id('test')

此時可以在

sql server enterprise manager

裡面看到該資料庫處於「唯讀

/置疑/離線

/緊急模式

」可以看到資料庫裡面的表,但是僅僅有系統表

g.下面執行真正的恢復操作,重建資料庫日誌檔案

dbcc rebuild_log('test','c:/program files/microsoft sql server/mssql/data/test_log.ldf')

執行過程中,如果遇到下列提示資訊:

伺服器:訊息

5030

,級別16

,狀態1,行1

未能排它地鎖定資料庫以執行該操作。

dbcc

執行完畢。如果

dbcc

說明您的其他程式正在使用該資料庫,如果剛才您在

f步驟中使用

sql server enterprise manager

開啟了test

庫的系統表,那麼退出

sql server enterprise manager

就可以了。

正確執行完成的提示應該類似於:

警告:資料庫

'test'

的日誌已重建。已失去事務的一致性。應執行

dbcc checkdb

以驗證物理一致性。將必須重置資料庫選項,並且可能需要刪除多餘的日誌檔案。

dbcc

執行完畢。如果

dbcc

此時開啟在

sql server enterprise manager

裡面會看到資料庫的狀態為「只供

dbo使用

」。此時可以訪問資料庫裡面的使用者表了。

h.驗證資料庫一致性

(可省略

)

dbcc checkdb('test')

一般執行結果如下:

checkdb

發現了0

個分配錯誤和

0 個一致性錯誤

(在資料庫

'test' 中)

。dbcc

執行完畢。如果

dbcc

i.設定資料庫為正常狀態

sp_dboption 'test','dbo use only','false'

如果沒有出錯,那麼恭喜,現在就可以正常的使用恢復後的資料庫啦。

j.最後一步,我們要將步驟

e中設定的

「允許對系統目錄直接修改

」一項恢復。因為平時直接作業系統表是一件比較危險的事情。當然,我們可以在

sql server enterprise manager

裡面恢復,也可以使用如下語句完成

如何恢復 修復MS SQL資料庫的MDF檔案

如果備份的 資料庫有2個 檔案,分別是.ldf 和 mdf,開啟企業管理器,在例項上右擊 所有任務 附加 資料庫,然後選擇那個.mdf檔案,就可以了。或者在查詢分析器中輸入 sp attach db 資料庫名稱 路徑 檔名.ldf 路徑 檔名.mdf sql server資料庫備份有兩種方式,一種是...

資料恢復承諾(資料庫修復承諾)

保證修復成功率 統計表明 不論是什麼原因造成的資料丟失,資料恢復的成功率可達 90 以上。對於軟體原因造成的資料丟失,只要資料沒有被真正覆蓋,資料恢復的成功率可達 100 病毒破壞導致的文件丟失或引導區損壞,人為誤操作刪除資料或覆蓋,分割槽表異常導致的資料丟失 其它原因導致的資料丟失或損壞等情況均可...

資料庫備份修復 如何通過備份修復表資料庫

資料庫備份修復 how to repair tables database by backup 如何通過備份 修復表資料庫 is this possible?這可能嗎?please explain how to repair.請說明如何修理。and thanks 謝謝 this post may h...