国产欧美日韩第一页|日本一二三不卡视频|在线精品小视频,亚洲第一免费播放区,metcn人体亚洲一区,亚洲精品午夜视频

幫助中心 >  技術(shù)知識(shí)庫 >  數(shù)據(jù)庫 >  相關(guān)技術(shù)支持 >  SQL Server數(shù)據(jù)庫啟動(dòng)過程,以及啟動(dòng)不起來的各種問題的分析及解決技巧 第二部分(共三部分)

SQL Server數(shù)據(jù)庫啟動(dòng)過程,以及啟動(dòng)不起來的各種問題的分析及解決技巧 第二部分(共三部分)

2016-09-20 18:10:29 7072

 第三步、啟動(dòng)系統(tǒng)數(shù)據(jù)庫master

master數(shù)據(jù)庫是SQL Server系統(tǒng)啟動(dòng)過程中的第一個(gè)系統(tǒng)庫,是非常關(guān)鍵的數(shù)據(jù)庫。如果這個(gè)庫不能被正常打開,則SQL Server就不能正常啟動(dòng)。

和其它數(shù)據(jù)庫一樣,master數(shù)據(jù)庫也分為數(shù)據(jù)文件和日志文件,啟動(dòng)的過程是依次打開,然后做恢復(fù)動(dòng)作,如果這個(gè)過程沒問題的話,在Errorlog日志文件中,我們會(huì)看到如下的這句話:

如果這個(gè)過程出現(xiàn)了任何問題,SQL Server的啟動(dòng)過程都會(huì)被中斷,啟動(dòng)過程失敗。

而這個(gè)過程發(fā)生的錯(cuò)誤,無非就集中以下幾種情況,我們來分析一下:

<1>在指定的路徑找不到master數(shù)據(jù)的數(shù)據(jù)文件或日志文件

關(guān)于這個(gè)SQL Server的最主要的系統(tǒng)數(shù)據(jù)庫的路徑,它是以注冊(cè)表形式存在的,在一下注冊(cè)表項(xiàng),可以看到

如果在該路徑下找不到這個(gè)系統(tǒng)數(shù)據(jù)庫的話,服務(wù)是啟動(dòng)不了的,并且會(huì)產(chǎn)生相應(yīng)的錯(cuò)誤日志信息,我們來模擬下,關(guān)掉服務(wù),將這兩個(gè)文件移除走,然后啟動(dòng)看一下:

首先,該服務(wù)是啟動(dòng)失敗的

我們來看一下系統(tǒng)日志

看Errorlog的日志信息

可以看到,該問題提示錯(cuò)誤信息還是挺詳細(xì)的。我們來看第二種情況

<2>文件找到了,但是沒有權(quán)限訪問,或者不能以排他的方式打開該文件(默認(rèn)的是獨(dú)占鎖進(jìn)行文件打開的)

此種情況也是有可能產(chǎn)生的,比如某些NB的殺毒軟件就可以干這個(gè)事,讓你的系統(tǒng)庫無法訪問,這樣同樣也是啟動(dòng)不了的,我們這樣來看,提示的錯(cuò)誤的信息有哪些:

來看Errorlog的錯(cuò)誤記錄:

<3>文件找到了,訪問權(quán)限也有,但是文件有問題,就是說是數(shù)據(jù)庫損壞了

這個(gè)問題也經(jīng)常出現(xiàn),比如磁盤壞掉了,恢復(fù)后發(fā)現(xiàn)文件有問題,不能正常打開,這種問題我們來看錯(cuò)誤信息:

 

日志中的信息

關(guān)于master系統(tǒng)庫的啟動(dòng)過程,基本就是上面的三種錯(cuò)誤,關(guān)于這三種問題,我們?cè)撊绾谓鉀Q呢?

解決方法:首先如果根據(jù)錯(cuò)誤日志定位出問題的性質(zhì),如果是前兩種問題其實(shí)是挺好解決的,比如文件沒找到、權(quán)限項(xiàng)不對(duì)等,這些問題相應(yīng)的去解決就可以,最棘手的就是第三種情況,出現(xiàn)這種情況最理想的情況是master數(shù)據(jù)庫進(jìn)行了備份,通過備份文件進(jìn)行恢復(fù)就可以,一切就可以正常,當(dāng)然通?暴力的停掉服務(wù),拷貝文件進(jìn)去也可以解決。

最揪心的就是這個(gè)庫就沒備份,那該如何解決呢?這種方式的解決就得借助SQL Server的安裝程序,進(jìn)行重建master數(shù)據(jù)了,但是這種方式重建的master數(shù)據(jù)庫會(huì)導(dǎo)致以前的SQL Server的設(shè)定全部清空掉。

清空的信息包括:所有的賬戶信息(意味著需要重建)、msdb中的所有job信息等(也需要重建)、用戶數(shù)據(jù)庫信息(必須全部重新附加attch上)

而這一系列過程如果是一個(gè)生產(chǎn)庫,可能會(huì)是一個(gè)非常大的工作量!

 

------------------------------------------------------分割線-----------------------------------------------------------------

 第四步、啟動(dòng)系統(tǒng)資源數(shù)據(jù)庫,并檢查數(shù)據(jù)版本信息

資源數(shù)據(jù)庫是SQL Server2005中引入的邏輯數(shù)據(jù)庫,在實(shí)例下是看不到的,但是有它的物理文件,主數(shù)據(jù)庫默認(rèn)名稱為:mssqlsystemresource.mdf、日志名稱為:mssqlsystemresource.ldf

如果該數(shù)據(jù)庫啟動(dòng)的過程中也出現(xiàn)了問題,那SQL Server也不能正常啟動(dòng)。

這個(gè)系統(tǒng)數(shù)據(jù)庫比較特別,它是一個(gè)只讀數(shù)據(jù)庫,完全由SQL Server自己維護(hù),用戶是不能更改的,所以我們只要保證它的是數(shù)據(jù)庫文件和日志完好就可以,不需要對(duì)它進(jìn)行任何的跟蹤和維護(hù)。

當(dāng)然如果非要看這個(gè)數(shù)據(jù)庫,可以通過單用戶的DAC方式進(jìn)行連接。

所以這個(gè)數(shù)據(jù)庫在一般情況下不會(huì)發(fā)生意外,基本上是能正常啟動(dòng),不過特殊情況下,不能啟動(dòng)的情況就以下兩種:

<1>數(shù)據(jù)庫文件不存在,無法訪問,或者文件壞掉了

其實(shí)它的報(bào)的錯(cuò)誤信息,類似于上面的master數(shù)據(jù)庫,我來截個(gè)圖,看一下:

這個(gè)是errorlog記錄的錯(cuò)誤信息

在windows層面也有它自己的錯(cuò)誤日志信息:

<2>資源數(shù)據(jù)庫的版本和SQL Server的版本不一致

這個(gè)有可能是人為的更改了這個(gè)資源數(shù)據(jù)庫,導(dǎo)致現(xiàn)有的資源數(shù)據(jù)庫文件和數(shù)據(jù)庫版本不一致,這樣的話也會(huì)導(dǎo)致錯(cuò)誤的形成

 

windwos平臺(tái)也記錄下了該錯(cuò)誤的信息,看下面的圖片:

 

 

解決方法:

關(guān)于資源庫的這兩個(gè)問題解決方法,非常的簡(jiǎn)單。只要找到和這臺(tái)服務(wù)器上的SQL Server的版本一致的數(shù)據(jù)庫,拷貝過來就行。

當(dāng)然最好的預(yù)防措施是:每當(dāng)安裝完SQL Server或者打完補(bǔ)丁之后,就及時(shí)的備份這個(gè)兩個(gè)文件,放在安全的地方,用的時(shí)候拷貝過來就行備份是數(shù)據(jù)庫管理員的天職

當(dāng)然有時(shí)候在緊急的情況下,找不到相同版本的數(shù)據(jù)庫,理論上這個(gè)庫是只讀的,所以不會(huì)發(fā)生任何改變,我們隨便找一臺(tái)機(jī)器,安裝一下同版本數(shù)據(jù)庫,然后拷貝過來就行,當(dāng)然一定注意的是這里面是相同版本。 

 

------------------------------------------------------分割?------------------------------------------------------------------

第五步、啟動(dòng)系統(tǒng)數(shù)據(jù)庫model

model系統(tǒng)數(shù)據(jù)庫同樣也是SQL Server啟動(dòng)過程中用到的一個(gè)非常關(guān)鍵的數(shù)據(jù)庫,如果這個(gè)庫損壞,SQL Server啟動(dòng)也會(huì)失敗,關(guān)于model數(shù)據(jù)不能啟動(dòng)的原因基本和master的類似,同樣也是兩種:1、數(shù)據(jù)庫文件早不到或者不能訪問;2、數(shù)據(jù)庫文件能訪問但是是損壞的文件。

診斷此種問題的方式也和上面的兩種方式一樣,查看啟動(dòng)過程產(chǎn)生的errorlog文件或者windows系統(tǒng)日志,這里我們就不重現(xiàn)該問題了。

我們只給出此種問題的解決方法

1、如果該庫我們已經(jīng)做過備份,那最直接也是最有效的解決方式就是直接還原,這里的還原方式可能和普通庫的還原方式不一樣,因?yàn)镾QL  Server實(shí)例還沒有啟動(dòng),我們恢復(fù)過程采取以下過程:

a.用參數(shù)啟動(dòng)SQL Server,在命令提示行中執(zhí)行以下命令,這樣的話SQL Server啟動(dòng)就會(huì)跳過model數(shù)據(jù)庫恢復(fù)這一步

net start MSSQLSERVER /f /m /T3608

b.現(xiàn)在恢復(fù)model數(shù)據(jù)庫,打開SSMS,直接輸入

RESTORE DATABASE model FROM DISK ='G:datamodel.bak'
WITH 
MOVE 'modeldev' TO 'E:dataDefaultFileMangerMSSQL10.MSSQLSERVERMSSQLDATAmodel.mdf'
MOVE 'modellog' TO 'E:dataDefaultFileMangerMSSQL10.MSSQLSERVERMSSQLDATAmodel.ldf'
,replace

c.恢復(fù)成功后,直接重啟SQL Server既可以。

2、將SQL Server關(guān)閉,然后直接采取暴力的方式將model數(shù)據(jù)文件拷貝回來就可以,這種方式簡(jiǎn)單有效,但是非常規(guī)操作

3、還有一種方式是利用setup安裝文件,重建該數(shù)據(jù)庫,過程緩慢,稍顯復(fù)雜,很不推薦。

 


提交成功!非常感謝您的反饋,我們會(huì)繼續(xù)努力做到更好!

這條文檔是否有幫助解決問題?

非常抱歉未能幫助到您。為了給您提供更好的服務(wù),我們很需要您進(jìn)一步的反饋信息:

在文檔使用中是否遇到以下問題: