標籤:SQL Server啟動服務
在日常管理維護SQL Server的時候,我們需要注意很多地方,然後有時候做起事情來也不得章法,現在就基本的原理和常見問題的解決思路,在這跟大家分享一下。
首先介紹一下SQL Server基本的運行原理。
作為一個Windows服務,SQL Server的每個執行個體就是一個sqlserve.exe進程。這個進程啟動後會讀取SQL Server執行個體的啟動配置,檢測硬體,配置記憶體和CPU,初始化一些SQL Server系統配置,啟動資料庫,串連網路。然後資料庫就算正常啟動了,然後用戶端可以正常訪問了。
這個是基本的啟動過程,那在什麼情況下回出現不能正常啟動呢,當然介紹的都是我們可以解決的基本情況,像執行檔案損壞,資料庫損壞,這些不能立即解決的問題,日後在介紹。
1.SQL Server執行個體服務進程無法正常啟動
sqlservr.exe進程在啟動的時候,需要讀取一些註冊表的索引值以及讀取一些檔案,然後根據這些配置做相應的動作。
那需要讀取的註冊表索引值是哪些,一般都有什麼作用呢:
1)HLM\SPFTWARE\Microsoft\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQLServer下,
Audit Level:設定SQL Server是否記錄使用者登入資訊,也可以在Management Studio裡的伺服器屬性設定。
Login Mode:設定SQL Server是只接收Windows賬戶登入,還是同時接收WIndows和SQL server賬戶。
2)啟動參數HLM\SPFTWARE\Microsoft\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQLServer\Parameters下,
SQL Server可以有很多啟動參數,有些事提供分析問題用的。
下面介紹幾個固定的參數:
-d 記錄的是master資料庫的資料檔案物理位置
-l 記錄的是master記錄檔物理位置
-e 記錄的是SQL Server錯誤記錄檔檔案的位置
3)網路設定資訊HLM\SPFTWARE\Microsoft\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQLServer\SuperSocketNetLib下,
SQL Server會偵聽哪幾個網路通訊協定,以及每個網路通訊協定的配置,也是放在註冊表裡。
從註冊表讀取SQL Server啟動資訊這一步可能遇到的兩個問題:
1)啟動帳號許可權問題
如果啟動帳號沒有許可權讀取註冊表或調用SQL Server的某些資源檔,那麼SQL Server這個進程有可能無法建立,這時可能errorlog檔案都無法產生。
需要解決這個問題,就是給啟動賬戶賦予許可權。
2)記錄檔和檔案夾訪問問題
SQL Server要成功啟動,必須要能正確的建立出記錄檔errorlog,如果記錄檔不能被建立成功,那麼SQL Server也就不能啟動。
有時候日誌的路徑不正確,即-e參數指定的位置不正確;或者某個進程將errorlog檔案鎖定了。
2.系統資料庫無法正常啟動
SQL Server服務開啟後,首先就是要去啟動系統資料庫,如果系統資料庫無法正常開啟,SQL Server也不會正常啟動。
3.網路設定失敗
要接收用戶端的串連,SQL Server必須配置好網路通訊協定,一般是TCP/IP,Named Pipe,LPC,如果協議沒有正確配置,用戶端也不能正常串連到SQL Server。
4.使用者資料無法正常啟動
SQL Server啟動的最後一步是開啟使用者資料庫,如果資料庫檔案損壞,或者上次SQL Server關閉的時候資料庫沒有被正常關閉,開啟使用者資料庫的時候可能會遇到麻煩。
5.群集環境下SQL Server資源無法保持正常線上
群集環境下安裝的SQL Server,會由Windows叢集服務來監控SQL Server是否正常工作。如果叢集服務連不上SQL Server,就可能發生切換。管理需要監控和分析,SQL Server資源為什麼不能保持線上,上次發生切換的原因是什麼。
提示:Errorlog日誌記錄的是SQL Server在啟動或運行過程中遇到的所有嚴重問題,所以當SQL Server遇到異常問題時,首先檢查記錄檔。這個檔案一般儲存7個,按時間由近到遠的順序,且重啟SQL Server服務會產生新的errorlog檔案。
啟動SQL Server服務和資料庫