SQL Server日志文件丟失的恢復方法
添加時間:2012-12-21 21:06:30
添加:
思海網絡
一、 概述
在應用系統中,數據庫往往是最核心的部分,一旦數據庫毀壞或損壞,將會帶來巨大的損失,所以數據庫的管理越來越重要。我們在做數據庫管理與維護工作中,不可避免會出現各種各樣的錯誤,本文針對數據庫的日志文件丟失時如何利用MDF文件恢復數據庫的方法進行了研究。
二、 數據庫的恢復
當數據庫的主數據MDF文件完好無損時,在丟失了LDF文件的情況下,如何利用MDF文件恢復數據庫?我們把SQL Server的日志文件分為兩類:一類是無活動事務的日志,另一類是含活動事務的日志,根據不同的日志,采取不同的方法來恢復數據庫。
1. 無活動事務的日志恢復
無活動事務的日志丟失時,我們很容易利用MDF文件直接恢復數據庫,具體方法如下:
①.分離被質疑的數據庫,可用企業管理器中的"分離數據庫工具",或者用存儲過程sp_detach_db分離數據庫;
②利用MDF文件附加數據庫生成新的日志文件,可用企業管理器中的"附加數據庫"的工具,或者用存儲過程sp_attach_single_file_db附加數據庫。
如果數據庫的日志文件中含有活動事務,利用此方法就不能恢復數據庫。
2. 含活動事務的日志恢復
含有活動事務的日志丟失時,利用上述方法就會出現"數據庫和日志文件不符合,不能附加數據庫"。對于這種情況下,我們采用如下方法:
①新建同名數據庫AAA,并設它為緊急模式
·停止SQL Server服務器;
·把數據庫主數據MDF文件移走;
·啟SQL Server服務器,新建一個同名的數據庫AAA;
·停止SQL Server服務器,把移走的MDF文件再覆蓋回來;
·啟動SQL Server服務器,把AAA設為緊急模式,不過默認情況下,系統表是不能隨便修改的,必須首先設置一下使其能被修改,運行以下語句即可:
接著運行以下語句,把AAA數據庫設為緊急模式,即把Sysdatabases表中AAA數據庫的status屬性設為’37268’,就表示把AAA數據庫處于緊急模式。
如果沒有報告什么錯誤,就可以進行以下操作。
②設置數據庫AAA為單用戶模式,并檢查數據庫
·重啟SQL Server服務器;
·把數據庫AAA設為單用戶模式
·運行以下語句,檢查數據庫AAA
如果沒有什么大的問題就可以把數據庫的狀態改回去。
③還原數據庫的狀態
運行以下語句,就可以把數據庫的狀態還原:
如果沒有什么大的問題,刷新一下數據庫,數據庫AAA又會出現在你面前,但目前恢復工作還沒有做完,此時的數據庫仍不能工作,還要進行下面的處理,才能真正恢復。
④利用DTS的導入導出向導,把數據庫AAA導入到一個新建數據庫BBB中
·新建一個數據庫BBB;
·右擊BBB,選擇IMPORT功能,打開導入向導;
·目標源選擇"在SQL Server數據庫之間復制對象和數據庫",這樣可以把表結構,數據視圖和存儲過程導入到BBB中
·再用此功能把BBB庫替換成原來的AAA庫即可。
到此為止,數據庫AAA就完全恢復。
三、 小結
日志文件丟失是一件非常危險的事情,很有可能你的數據庫徹底毀壞。SQL Server數據庫的恢復都是靠日志文件來完成,所以無論如何都要保證日志文件的存在,它至關重要。為了使我們的數據庫萬無一失,最好采用多種備份方式相結合,所以我們要從心里重視數據庫的管理與維護工作。
關鍵字:數據庫、服務器、SQL Server
在應用系統中,數據庫往往是最核心的部分,一旦數據庫毀壞或損壞,將會帶來巨大的損失,所以數據庫的管理越來越重要。我們在做數據庫管理與維護工作中,不可避免會出現各種各樣的錯誤,本文針對數據庫的日志文件丟失時如何利用MDF文件恢復數據庫的方法進行了研究。
二、 數據庫的恢復
當數據庫的主數據MDF文件完好無損時,在丟失了LDF文件的情況下,如何利用MDF文件恢復數據庫?我們把SQL Server的日志文件分為兩類:一類是無活動事務的日志,另一類是含活動事務的日志,根據不同的日志,采取不同的方法來恢復數據庫。
1. 無活動事務的日志恢復
無活動事務的日志丟失時,我們很容易利用MDF文件直接恢復數據庫,具體方法如下:
①.分離被質疑的數據庫,可用企業管理器中的"分離數據庫工具",或者用存儲過程sp_detach_db分離數據庫;
②利用MDF文件附加數據庫生成新的日志文件,可用企業管理器中的"附加數據庫"的工具,或者用存儲過程sp_attach_single_file_db附加數據庫。
如果數據庫的日志文件中含有活動事務,利用此方法就不能恢復數據庫。
2. 含活動事務的日志恢復
含有活動事務的日志丟失時,利用上述方法就會出現"數據庫和日志文件不符合,不能附加數據庫"。對于這種情況下,我們采用如下方法:
①新建同名數據庫AAA,并設它為緊急模式
·停止SQL Server服務器;
·把數據庫主數據MDF文件移走;
·啟SQL Server服務器,新建一個同名的數據庫AAA;
·停止SQL Server服務器,把移走的MDF文件再覆蓋回來;
·啟動SQL Server服務器,把AAA設為緊急模式,不過默認情況下,系統表是不能隨便修改的,必須首先設置一下使其能被修改,運行以下語句即可:
Use Master Go sp_configure ’allow updates’,1 reconfigure with override Go |
接著運行以下語句,把AAA數據庫設為緊急模式,即把Sysdatabases表中AAA數據庫的status屬性設為’37268’,就表示把AAA數據庫處于緊急模式。
update sysdatabases set status=32768 where hame=’AAA’ |
如果沒有報告什么錯誤,就可以進行以下操作。
②設置數據庫AAA為單用戶模式,并檢查數據庫
·重啟SQL Server服務器;
·把數據庫AAA設為單用戶模式
Sp_dboption ’AAA’, ’single user’, ’true’ |
·運行以下語句,檢查數據庫AAA
DBCC CHECKDB(’AAA’) |
如果沒有什么大的問題就可以把數據庫的狀態改回去。
③還原數據庫的狀態
運行以下語句,就可以把數據庫的狀態還原:
update sysdatabases set status=28 where name=’AAA’ sp_configure ’allow updates’,0 reconfigure with override Go |
如果沒有什么大的問題,刷新一下數據庫,數據庫AAA又會出現在你面前,但目前恢復工作還沒有做完,此時的數據庫仍不能工作,還要進行下面的處理,才能真正恢復。
④利用DTS的導入導出向導,把數據庫AAA導入到一個新建數據庫BBB中
·新建一個數據庫BBB;
·右擊BBB,選擇IMPORT功能,打開導入向導;
·目標源選擇"在SQL Server數據庫之間復制對象和數據庫",這樣可以把表結構,數據視圖和存儲過程導入到BBB中
·再用此功能把BBB庫替換成原來的AAA庫即可。
到此為止,數據庫AAA就完全恢復。
三、 小結
日志文件丟失是一件非常危險的事情,很有可能你的數據庫徹底毀壞。SQL Server數據庫的恢復都是靠日志文件來完成,所以無論如何都要保證日志文件的存在,它至關重要。為了使我們的數據庫萬無一失,最好采用多種備份方式相結合,所以我們要從心里重視數據庫的管理與維護工作。
關鍵字:數據庫、服務器、SQL Server
新文章:
- CentOS7下圖形配置網絡的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統后丟失windows啟動項
- CentOS單網卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網打印機IP講解
- CentOS7使用hostapd實現無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網絡重啟出錯
- 解決Centos7雙系統后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統有什么不同呢
- Centos 6.6默認iptable規則詳解