SQL Server資料庫多資料檔案恢復技術

yj5tm8發表於2008-04-14

由於截斷資料庫日誌或者其他需要,我們需要由單個資料檔案中恢復資料庫。下面的操作需要用sa的身份在SQL Server 查詢分析器中登入,並一直假設我們要恢復的資料庫是test,資料檔案是C:Program FilesMicrosoft SQL ServerMSSQLdatatest_data.mdf。同時如果你需要截斷日誌檔案,請在資料庫離線後將日誌檔案改名。
如果您的mdf檔案是當前資料庫產生的並且是單個資料日誌的,那麼一般情況下你可以很輕鬆的使用sp_attach_single_file_db恢復資料庫,操作語句如下:
sp_attach_single_file_db @dbname = 'test', @physname = 'C:Program FilesMicrosoft SQL ServerMSSQLDatatest_data.mdf'
會出現類似下面的提示資訊裝置啟用錯誤。物理檔名 'C:Program FilesMicrosoft SQL ServerMSSQLdatatest_Log.LDF' 可能有誤。已建立名為 'C:Program FilesMicrosoft SQL ServerMSSQLDatatest_log.LDF' 的新日誌檔案。如果目的是截斷日誌,你可以將剛才改名的日誌檔案刪除或者備份了。
但是,如果您的資料庫檔案是從其他計算機上覆制過來的或者有多個資料或日誌檔案,那麼很不幸,上述辦法多半行不通了。你也許會得到類似下面的錯誤資訊伺服器: 訊息 1813,級別 16,狀態 2,行 1未能開啟新資料庫 'test'CREATE DATABASE 將終止。裝置啟用錯誤。物理檔名 'C:Program FilesMicrosoft SQL ServerMSSQLDatatest_log.LDF' 可能有誤。我們需要用下面的操作來試著恢復(此操作具有很大的危險性,請確認在操作時您的資料庫不在使用中)。

1. 1、我們使用預設方式建立一個供恢復使用的資料庫(test)。如果是多資料檔案的,請確認新建資料檔案的名稱及數目和要恢復的資料檔案一致。日誌檔案就不必了;

2. 2、停掉資料庫伺服器;

3. 3、將剛才生成的資料庫的日誌檔案test_log.ldf刪除,用要恢復的資料庫mdf檔案覆蓋剛才生成的資料庫資料檔案test_data.mdf

4. 4、啟動資料庫伺服器。此時會看到資料庫test的狀態為置疑

5. 5、設定資料庫允許直接作業系統表。在SQL Server 企業管理器裡面選擇資料庫伺服器,按右鍵,選擇屬性,在伺服器設定頁面中將允許對系統目錄直接修改一項選中;

6. 6、設定test為緊急修復模式update sysdatabases set status=-32768 where dbid=DB_ID('test')此時可以在SQL Server 企業管理器裡面看到該資料庫處於只讀置疑離線緊急模式可以看到資料庫裡面的表,但是僅僅有系統表;

7. 7、 下面重建資料庫日誌檔案dbcc rebuild_log('test','C:Program FilesMicrosoft SQL ServerMSSQLDatatest_log.ldf')執行過程中,如果遇到下列提示資訊:伺服器: 訊息 5030,級別 16,狀態 1,行 1未能排它地鎖定資料庫以執行該操作。DBCC 執行完畢。如果 DBCC 輸出了錯誤資訊,請與系統管理員聯絡。說明其他程式正在使用該資料庫,如果您正在使用SQL Server 企業管理器,那麼關閉它。正確執行完成的提示應該類似於:警告: 資料庫 'test' 的日誌已重建。已失去事務的一致性。應執行 DBCC CHECKDB 以驗證物理一致性。將必須重置資料庫選項,並且可能需要刪除多餘的日誌檔案。DBCC 執行完畢。如果 DBCC 輸出了錯誤資訊,請與系統管理員聯絡。此時開啟在SQL Server 企業管理器裡面會看到資料庫的狀態為只供DBO使用

8. 8、 驗證資料庫一致性(可省略)dbcc checkdb('test')在進行了多個驗證後,最後的執行結果一般如下:CHECKDB 發現了 0 個分配錯誤和 0 個一致性錯誤(在資料庫 'test' 中)。DBCC 執行完畢。如果 DBCC 輸出了錯誤資訊,請與系統管理員聯絡;

9. 9、設定資料庫為正常狀態sp_dboption 'test','dbo use only','false'如果沒有出錯,那麼恭喜,現在就可以正常的使用恢復後的資料庫啦;

10、最後一步,我們要將步驟5中設定的允許對系統目錄直接修改一項恢復。在SQL Server 企業管理器裡面選擇資料庫伺服器,按右鍵,選擇屬性,取消在伺服器設定頁面中將允許對系統目錄直接修改的選擇。[@more@]SQL Server資料庫多資料檔案恢復技術

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/731863/viewspace-1002498/,如需轉載,請註明出處,否則將追究法律責任。

相關文章