IT貓撲網(wǎng):您身邊最放心的安全下載站! 最新更新|軟件分類|軟件專題|手機(jī)版|論壇轉(zhuǎn)貼|軟件發(fā)布

您當(dāng)前所在位置:首頁數(shù)據(jù)庫MSSQL → SQL Server 數(shù)據(jù)庫出現(xiàn)崩潰狀況的補(bǔ)救

SQL Server 數(shù)據(jù)庫出現(xiàn)崩潰狀況的補(bǔ)救

時(shí)間:2015/6/28來源:IT貓撲網(wǎng)作者:網(wǎng)管聯(lián)盟我要評論(0)

此文章主要介紹的是sql server 數(shù)據(jù)庫出現(xiàn)崩潰的情況的恢復(fù)方案,在實(shí)際操作中可以說任何的數(shù)據(jù)庫系統(tǒng)出現(xiàn)崩潰狀況都是正常的,即便你使用了Clustered,雙機(jī)熱備……仍然無法完全根除系統(tǒng)中的單點(diǎn)故障,何況對于大部分用戶來說,無法承受這樣昂貴的硬件投資。

所以,在系統(tǒng)崩潰的時(shí)候,如何恢復(fù)原有的寶貴數(shù)據(jù)就成為一個(gè)極其重要的問題了。

在恢復(fù)的時(shí)候,最理想的情況就是你的數(shù)據(jù)文件和日志文件都完好無損了,這樣只需要sp_attach_db,把數(shù)據(jù)文件附加到新的數(shù)據(jù)庫上即可,或者在停機(jī)的時(shí)候把所有數(shù)據(jù)文件(一定要有master等)都copy到原有路徑下也行,不過一般不推薦這樣的做法,sp_attach_db比較好,雖然麻煩許多。

不幸的是,一般SQL Server 數(shù)據(jù)庫崩潰都是由于存儲(chǔ)子系統(tǒng)引起的,而這樣的情況是幾乎不可能有可用的日志用于恢復(fù)的。

首先,你可以試一下sp_attach_single_file_db,試著恢復(fù)一下你的數(shù)據(jù)文件,雖然能恢復(fù)的可能性不大,不過假如這個(gè)數(shù)據(jù)庫剛好執(zhí)行了一個(gè)checkpoint的話,還是有可能成功的。

我們可以試著重新建立一個(gè)Log,先把數(shù)據(jù)庫設(shè)置為emergency mode,sysdatabases的status為32768 就表示SQL Server 數(shù)據(jù)庫處于此狀態(tài)。

不過系統(tǒng)表是不能隨便改的,設(shè)置一下先Use MasterGosp_configure 'allow updates', 1reconfigure with overrideGo然后 update sysdatabases set status = 32768 where name = '' 現(xiàn)在,祈求滿天神佛的保佑吧,重新建立一個(gè)log文件。成功的機(jī)會(huì)還是相當(dāng)大的,系統(tǒng)一般都會(huì)認(rèn)可你新建立的日志。如果沒有報(bào)告什么錯(cuò)誤,現(xiàn)在就可以松一口氣了。

雖然數(shù)據(jù)是恢復(fù)了,可是別以為事情就算完成了,正在進(jìn)行的事務(wù)肯定是丟失了,原來的數(shù)據(jù)也可能受到一些損壞:

先把SQL Server 重新啟動(dòng)一下,然后檢查你的數(shù)據(jù)庫吧;

先設(shè)置成單用戶模式,然后做dbcc sp_dboption '', 'single user', 'true'DBCC CHECKDB('');

如果沒有什么大問題就可以把SQL Server 數(shù)據(jù)庫狀態(tài)改回去了,記得別忘了把系統(tǒng)表的修改選項(xiàng)關(guān)掉。update sysdatabases set status = 28 where name = '' ,當(dāng)然你的數(shù)據(jù)庫狀態(tài)可能不是這個(gè),自己改為合適的值吧。也可以用:

  1. sp_resetstatusgosp_configure 'allow updates', 0reconfigure with overrideGo 

checkdb的時(shí)候可能報(bào)告有一些錯(cuò)誤,這些錯(cuò)誤的數(shù)據(jù)你可能就只好丟棄了;checkdb有幾種修復(fù)選項(xiàng),自己看著用吧,不過最后你可能還是得REPAIR_ALLOW_DATA_LOSS,完成所有修復(fù);chekcdb并不能完成所有的修復(fù),我們需要更進(jìn)一步的修復(fù),用DBCC CHECKTABLE對每一個(gè)表做檢查吧。

表的列表可以用sysobjects里面得到,把OBJECTPROPERTY是IsTable的全部找出來檢查一下吧,這樣能夠基本上解決問題了,如果還報(bào)告錯(cuò)誤,試著把數(shù)據(jù)select into到另一張表檢查一下。

這些都做完了之后,把所有索引、視圖、存儲(chǔ)過程、觸發(fā)器等重新建立一下?梢詮腄BCC DBREINDEX得到幫助。

以上的相關(guān)內(nèi)容就是對SQL Server 數(shù)據(jù)庫崩潰后的恢復(fù)之法的介紹,望你能有所收獲。

關(guān)鍵詞標(biāo)簽:SQL Server,數(shù)據(jù)庫

相關(guān)閱讀

文章評論
發(fā)表評論

熱門文章 SqlServer2005對現(xiàn)有數(shù)據(jù)進(jìn)行分區(qū)具體步驟SqlServer2005對現(xiàn)有數(shù)據(jù)進(jìn)行分區(qū)具體步驟sql server系統(tǒng)表損壞的解決方法sql server系統(tǒng)表損壞的解決方法MS-SQL2005服務(wù)器登錄名、角色、數(shù)據(jù)庫用戶MS-SQL2005服務(wù)器登錄名、角色、數(shù)據(jù)庫用戶Access、SQL Server、Oracle常見應(yīng)用的區(qū)別Access、SQL Server、Oracle常見應(yīng)用的區(qū)別

相關(guān)下載

人氣排行 如何遠(yuǎn)程備份(還原)SQL2000數(shù)據(jù)庫SQL2000數(shù)據(jù)庫遠(yuǎn)程導(dǎo)入(導(dǎo)出)數(shù)據(jù)配置和注冊O(shè)DBC數(shù)據(jù)源-odbc數(shù)據(jù)源配置教程SQL2000和SQL2005數(shù)據(jù)庫服務(wù)端口查看或修改SQL Server 2005降級(jí)到2000的正確操作步驟修改Sql Server唯一約束教程淺談JSP JDBC來連接SQL Server 2005的方法SQL Server創(chuàng)建表語句介紹