緊急恢復(fù)SQL Server主master數(shù)據(jù)庫(kù)
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
本文介紹如何緊急恢復(fù)SQL Server主數(shù)據(jù)庫(kù),這樣就不用再在SQL Server的主數(shù)據(jù)庫(kù)崩潰導(dǎo)致數(shù)據(jù)庫(kù)服務(wù)器停止工作的情況下不知所措了。 如果主數(shù)據(jù)庫(kù)發(fā)生故障,那么微軟的SQL Server可能會(huì)怦然倒下??纯慈绾蚊鎸?duì)這種事件,了解如何用企業(yè)管理器和查詢分析器修復(fù)主數(shù)據(jù)庫(kù)。 作為一名微軟SQL Server的管理員,您必須知道如何修復(fù)一個(gè)崩潰的主數(shù)據(jù)庫(kù)。主數(shù)據(jù)庫(kù)保存有您的登錄信息,以及最重要的、指向您所有數(shù)據(jù)庫(kù)的指針。如果沒有主數(shù)據(jù)庫(kù),您就無法成功地啟動(dòng)SQL Server。在本文里,我將向您介紹在發(fā)生崩潰的情況下如何修復(fù)主數(shù)據(jù)庫(kù),并告訴您如何重建主數(shù)據(jù)庫(kù),如果有必要的話。 制定預(yù)案 制定一個(gè)應(yīng)對(duì)崩潰和/或主數(shù)據(jù)庫(kù)故障的預(yù)案十分重要。這將有助于您在碰到災(zāi)難的情況下按照既定的方法進(jìn)行處理,而不是迫于壓力倉(cāng)促作出反應(yīng)。我碰到過很多很容易就陷入驚慌的狀況,但是由于保持冷靜并按照正確的方法來處理問題,我最后成功地度過了所有的困境。 怎么才能知道您的主數(shù)據(jù)庫(kù)已經(jīng)崩潰? 在正式開始討論碰到系統(tǒng)故障如何修復(fù)和重建的主數(shù)據(jù)庫(kù)之前,我們需要先了解如何辨別它已經(jīng)崩潰了。要說明這一點(diǎn),我會(huì)弄垮一個(gè)主數(shù)據(jù)庫(kù),告訴您主數(shù)據(jù)庫(kù)崩潰會(huì)發(fā)生什么樣的癥狀。 現(xiàn)在讓我們假設(shè)您的公司碰到了電涌,造成SQL Server重啟。在重新啟動(dòng)的時(shí)候,SQL Server卻沒有正常啟動(dòng)。如果查看錯(cuò)誤日志(圖A),您會(huì)看到主數(shù)據(jù)庫(kù)崩潰或者丟失。既然您知道需要查看什么信息,那就讓我們看看如何修復(fù)主數(shù)據(jù)庫(kù)。 圖A
修復(fù)您的主數(shù)據(jù)庫(kù) 修復(fù)主數(shù)據(jù)庫(kù)的第一步是使用“重建向?qū)В≧ebuild Wizard,Rebuildm.exe),它放在Program FilesMicrosoft SQL Server80ToolsBINN目錄下?,F(xiàn)在就讓我們來看看重建向?qū)侨绾喂ぷ鞯摹? 雙擊Rebuildm.exe啟動(dòng)圖B所示的對(duì)話框。 圖B
在這個(gè)對(duì)話框里,您可以指定數(shù)據(jù)庫(kù)服務(wù)器的修復(fù)設(shè)置,以及原始安裝的數(shù)據(jù)文件的位置。要讓這一過程更容易和更快,就要把x86目錄從SQL的光盤上復(fù)制到硬盤上,并把指向改到本地的副本。一旦驗(yàn)證完了所有的信息,點(diǎn)擊“重建(Rebuild)”。然后系統(tǒng)就會(huì)提示您確認(rèn)操作,如圖C所示。 圖C
點(diǎn)擊“確定(Yes)”。一旦重建過程完成,您會(huì)看到一條重建成功的消息。您現(xiàn)在就有了一個(gè)全新的主數(shù)據(jù)庫(kù),準(zhǔn)備好修復(fù)主數(shù)據(jù)庫(kù)了。 首先,打開命令行提示符,輸入Program FilesMicrosoft SQL ServerMSSQLBINN目錄下的sqlservr.exe –c –m命令,啟動(dòng)單用戶模式下的SQL Server。結(jié)果如圖D所示。 圖D
在單用戶模式下啟動(dòng)SQL Server之后,您可以利用備份文件修復(fù)主數(shù)據(jù)庫(kù)。您可以用“查詢分析器(Query Analyzer)”或者“SQL企業(yè)管理器(SQL Enterprise Manager)”來修復(fù)它。如果使用查詢分析器,您就要像圖E一樣運(yùn)行查詢。 圖E
如果使用企業(yè)服務(wù)器,就要右擊主數(shù)據(jù)庫(kù),選擇“所有任務(wù)|修復(fù)數(shù)據(jù)庫(kù)(All Tasks | Restore Database)”,瀏覽到您設(shè)備所在的位置,如圖F所示。點(diǎn)擊兩次“OK”,您就可以成功地修復(fù)主數(shù)據(jù)庫(kù)了。 圖F
修復(fù)完主數(shù)據(jù)庫(kù),退出單用戶模式,在正常的操作模式下重新啟動(dòng)SQL Server。 如果由于某種原因您的修復(fù)操作無法成功完成,那么您可以試試別的方法。只用簡(jiǎn)單地重建主數(shù)據(jù)庫(kù)并添加駐留在數(shù)據(jù)目錄下的所有數(shù)據(jù)庫(kù)就可以了。您可以用企業(yè)管理器或者查詢分析器來添加數(shù)據(jù)庫(kù)。在企業(yè)管理器里,右擊“數(shù)據(jù)庫(kù)(Databases)”,選擇“添加數(shù)據(jù)庫(kù)(Attach Database)”,如圖G所示。圖G
結(jié)束語 既然已經(jīng)知道了如何在碰到災(zāi)難的情況下成功地重建主數(shù)據(jù)庫(kù),那么您可以把這些技術(shù)增加到災(zāi)難修復(fù)預(yù)案中去。這樣的話,您就不用
SQL Server 中4個(gè)系統(tǒng)數(shù)據(jù)庫(kù),Master、Model、Msdb、Tempdb。(1)Master數(shù)據(jù)庫(kù)是SQL Server系統(tǒng)最重要的數(shù)據(jù)庫(kù),它記錄了SQL Server系統(tǒng)的所有系統(tǒng)信息。這些系統(tǒng)信息包括所有的登錄信息、系統(tǒng)設(shè)置信息、SQL Server的初始化信息和其他系統(tǒng)數(shù)據(jù)庫(kù)及用戶數(shù)據(jù)庫(kù)的相關(guān)信息。因此,如果 master 數(shù)據(jù)庫(kù)不可用,則 SQL Server 無法啟動(dòng)。在 SQL Server 2005 中,系統(tǒng)對(duì)象不再存儲(chǔ)在 master 數(shù)據(jù)庫(kù)中,而是存儲(chǔ)在 Resource 數(shù)據(jù)庫(kù)中。 (2)model 數(shù)據(jù)庫(kù)用作在 SQL Server 實(shí)例上創(chuàng)建的所有數(shù)據(jù)庫(kù)的模板。因?yàn)槊看螁?dòng) SQL Server 時(shí)都會(huì)創(chuàng)建 tempdb,所以 model 數(shù)據(jù)庫(kù)必須始終存在于 SQL Server 系統(tǒng)中。當(dāng)發(fā)出 CREATE DATABASE(創(chuàng)建數(shù)據(jù)庫(kù))語句時(shí),將通過復(fù)制 model 數(shù)據(jù)庫(kù)中的內(nèi)容來創(chuàng)建數(shù)據(jù)庫(kù)的第一部分,然后用空頁填充新數(shù)據(jù)庫(kù)的剩余部分。 如果修改 model 數(shù)據(jù)庫(kù),之后創(chuàng)建的所有數(shù)據(jù)庫(kù)都將繼承這些修改。例如,可以設(shè)置權(quán)限或數(shù)據(jù)庫(kù)選項(xiàng)或者添加對(duì)象,例如,表、函數(shù)或存儲(chǔ)過程。 (3)Msdb數(shù)據(jù)庫(kù)是代理服務(wù)數(shù)據(jù)庫(kù),為其報(bào)警、任務(wù)調(diào)度和記錄操作員的操作提供存儲(chǔ)空間。 (4)Tempdb是一個(gè)臨時(shí)數(shù)據(jù)庫(kù),它為所有的臨時(shí)表、臨時(shí)存儲(chǔ)過程及其他臨時(shí)操作提供存儲(chǔ)空間。Tempdb數(shù)據(jù)庫(kù)由整個(gè)系統(tǒng)的所有數(shù)據(jù)庫(kù)使用,不管用戶使用哪個(gè)數(shù)據(jù)庫(kù),他們所建立的所有臨時(shí)表和存儲(chǔ)過程都存儲(chǔ)在tempdb上。SQL Server每次啟動(dòng)時(shí),tempdb數(shù)據(jù)庫(kù)被重新建立。當(dāng)用戶與SQL Server斷開連接時(shí),其臨時(shí)表和存儲(chǔ)過程自動(dòng)被刪除。 該文章在 2011/2/28 11:51:08 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |