啟動SQL Server服務和數據庫
阿新 • • 發佈:2018-05-07
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基本的運行原理。
作為一個Windows服務,SQL Server的每個實例就是一個sqlserve.exe進程。這個進程啟動後會讀取SQL Server實例的啟動配置,檢測硬件,配置內存和CPU,初始化一些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賬戶。
SQL Server可以有很多啟動參數,有些事提供分析問題用的。
下面介紹幾個固定的參數:
-d 記錄的是master數據庫的數據文件物理位置
-l 記錄的是master日誌文件物理位置
-e 記錄的是SQL Server錯誤日誌文件的位置
3)網絡配置信息HLM\SPFTWARE\Microsoft\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQLServer\SuperSocketNetLib下,
從註冊表讀取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服務和數據庫