- 工信部備案號 滇ICP備05000110號-1
- 滇公安備案 滇53010302000111
- 增值電信業務經營許可證 B1.B2-20181647、滇B1.B2-20190004
- 云南互聯網協會理事單位
- 安全聯盟認證網站身份V標記
- 域名注冊服務機構許可:滇D3-20230001
- 代理域名注冊服務機構:新網數碼
第三步、啟動系統數據庫master
master數據庫是SQL Server系統啟動過程中的第一個系統庫,是非常關鍵的數據庫。如果這個庫不能被正常打開,則SQL Server就不能正常啟動。
和其它數據庫一樣,master數據庫也分為數據文件和日志文件,啟動的過程是依次打開,然后做恢復動作,如果這個過程沒問題的話,在Errorlog日志文件中,我們會看到如下的這句話:
如果這個過程出現了任何問題,SQL Server的啟動過程都會被中斷,啟動過程失敗。
而這個過程發生的錯誤,無非就集中以下幾種情況,我們來分析一下:
<1>在指定的路徑找不到master數據的數據文件或日志文件
關于這個SQL Server的最主要的系統數據庫的路徑,它是以注冊表形式存在的,在一下注冊表項,可以看到
如果在該路徑下找不到這個系統數據庫的話,服務是啟動不了的,并且會產生相應的錯誤日志信息,我們來模擬下,關掉服務,將這兩個文件移除走,然后啟動看一下:
首先,該服務是啟動失敗的
我們來看一下系統日志
看Errorlog的日志信息
可以看到,該問題提示錯誤信息還是挺詳細的。我們來看第二種情況
<2>文件找到了,但是沒有權限訪問,或者不能以排他的方式打開該文件(默認的是獨占鎖進行文件打開的)
此種情況也是有可能產生的,比如某些NB的殺毒軟件就可以干這個事,讓你的系統庫無法訪問,這樣同樣也是啟動不了的,我們這樣來看,提示的錯誤的信息有哪些:
來看Errorlog的錯誤記錄:
<3>文件找到了,訪問權限也有,但是文件有問題,就是說是數據庫損壞了
這個問題也經常出現,比如磁盤壞掉了,恢復后發現文件有問題,不能正常打開,這種問題我們來看錯誤信息:
日志中的信息
關于master系統庫的啟動過程,基本就是上面的三種錯誤,關于這三種問題,我們該如何解決呢?
解決方法:首先如果根據錯誤日志定位出問題的性質,如果是前兩種問題其實是挺好解決的,比如文件沒找到、權限項不對等,這些問題相應的去解決就可以,最棘手的就是第三種情況,出現這種情況最理想的情況是master數據庫進行了備份,通過備份文件進行恢復就可以,一切就可以正常,當然通?暴力的停掉服務,拷貝文件進去也可以解決。
最揪心的就是這個庫就沒備份,那該如何解決呢?這種方式的解決就得借助SQL Server的安裝程序,進行重建master數據了,但是這種方式重建的master數據庫會導致以前的SQL Server的設定全部清空掉。
清空的信息包括:所有的賬戶信息(意味著需要重建)、msdb中的所有job信息等(也需要重建)、用戶數據庫信息(必須全部重新附加attch上)
而這一系列過程如果是一個生產庫,可能會是一個非常大的工作量!
------------------------------------------------------分割線-----------------------------------------------------------------
第四步、啟動系統資源數據庫,并檢查數據版本信息
資源數據庫是SQL Server2005中引入的邏輯數據庫,在實例下是看不到的,但是有它的物理文件,主數據庫默認名稱為:mssqlsystemresource.mdf、日志名稱為:mssqlsystemresource.ldf
如果該數據庫啟動的過程中也出現了問題,那SQL Server也不能正常啟動。
這個系統數據庫比較特別,它是一個只讀數據庫,完全由SQL Server自己維護,用戶是不能更改的,所以我們只要保證它的是數據庫文件和日志完好就可以,不需要對它進行任何的跟蹤和維護。
當然如果非要看這個數據庫,可以通過單用戶的DAC方式進行連接。
所以這個數據庫在一般情況下不會發生意外,基本上是能正常啟動,不過特殊情況下,不能啟動的情況就以下兩種:
<1>數據庫文件不存在,無法訪問,或者文件壞掉了
其實它的報的錯誤信息,類似于上面的master數據庫,我來截個圖,看一下:
這個是errorlog記錄的錯誤信息
在windows層面也有它自己的錯誤日志信息:
<2>資源數據庫的版本和SQL Server的版本不一致
這個有可能是人為的更改了這個資源數據庫,導致現有的資源數據庫文件和數據庫版本不一致,這樣的話也會導致錯誤的形成
windwos平臺也記錄下了該錯誤的信息,看下面的圖片:
解決方法:
關于資源庫的這兩個問題解決方法,非常的簡單。只要找到和這臺服務器上的SQL Server的版本一致的數據庫,拷貝過來就行。
當然最好的預防措施是:每當安裝完SQL Server或者打完補丁之后,就及時的備份這個兩個文件,放在安全的地方,用的時候拷貝過來就行,備份是數據庫管理員的天職
當然有時候在緊急的情況下,找不到相同版本的數據庫,理論上這個庫是只讀的,所以不會發生任何改變,我們隨便找一臺機器,安裝一下同版本數據庫,然后拷貝過來就行,當然一定注意的是這里面是相同版本。
------------------------------------------------------分割?------------------------------------------------------------------
第五步、啟動系統數據庫model
model系統數據庫同樣也是SQL Server啟動過程中用到的一個非常關鍵的數據庫,如果這個庫損壞,SQL Server啟動也會失敗,關于model數據不能啟動的原因基本和master的類似,同樣也是兩種:1、數據庫文件早不到或者不能訪問;2、數據庫文件能訪問但是是損壞的文件。
診斷此種問題的方式也和上面的兩種方式一樣,查看啟動過程產生的errorlog文件或者windows系統日志,這里我們就不重現該問題了。
我們只給出此種問題的解決方法:
1、如果該庫我們已經做過備份,那最直接也是最有效的解決方式就是直接還原,這里的還原方式可能和普通庫的還原方式不一樣,因為SQL Server實例還沒有啟動,我們恢復過程采取以下過程:
a.用參數啟動SQL Server,在命令提示行中執行以下命令,這樣的話SQL Server啟動就會跳過model數據庫恢復這一步
net start MSSQLSERVER /f /m /T3608
b.現在恢復model數據庫,打開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.恢復成功后,直接重啟SQL Server既可以。
2、將SQL Server關閉,然后直接采取暴力的方式將model數據文件拷貝回來就可以,這種方式簡單有效,但是非常規操作
3、還有一種方式是利用setup安裝文件,重建該數據庫,過程緩慢,稍顯復雜,很不推薦。
售前咨詢
售后咨詢
備案咨詢
二維碼
TOP