疑難排解 Database Engine 啟動期間發生的通訊協定錯誤
當 SQL Server Database Engine 在啟動時發生與通訊協定相關的錯誤時,系統會在 SQL Server 錯誤記錄檔與 Windows 事件記錄檔中寫入下列形式的錯誤訊息。
「錯誤:17182,嚴重性:16,狀態:1."
「TDSSNIClient 初始化失敗,其錯誤為 <x>,狀態碼為 <y>。」
在這個訊息中,<x> 是通訊子系統或安全性子系統傳回的基礎錯誤碼,而 <y> 則是 SQL Server 內部的通訊協定錯誤狀態。
[!附註]
Shared Memory 通訊協定與 Named Pipes 通訊協定會共用其實作的某些層面,所以如果有一個通訊協定失敗,就可能造成另一個通訊協定也失敗。如果錯誤訊息中所述的通訊協定已停用,但仍然發生此錯誤,請先停用 Shared Memory 和 Named Pipes 通訊協定,然後再重新啟動這兩項通訊協定。
解譯錯誤碼
基礎錯誤碼 <x> 通常是由 Windows 網路層或是安全性支援提供者介面 (SSPI) 傳回的錯誤碼。對於 Windows 網路錯誤碼,執行 net helpmsg 命令或許可以協助解譯程式碼。但是 SSPI 錯誤碼則不容易解密,您可能需要搜尋 Microsoft 知識庫,或者如果您有安裝作業系統 SDK,則可以檢查 WinError.h 檔案。
解譯通訊協定錯誤狀態碼
下表列出 SQL Server 通訊協定錯誤狀態。請注意大部份的錯誤狀態都可指出內部錯誤狀況,但是特定值將為錯誤屬於哪個特定通訊協定部份提供有用的資訊。例如,如果值是介於 7 到 30 (0x0A 與 0x1E) 之間,這個錯誤就是源自 TCP/IP 處理。錯誤訊息中的狀態碼是以十六進位格式顯示。為了清楚起見,下表提供十進位的相等值。
十六進位格式的狀態碼範圍 |
十進位格式的狀態碼範圍 |
通訊協定區域 |
---|---|---|
0x03 |
3 |
共用記憶體 |
0x07-0x1E |
7-30 |
TCP/IP |
0x1F-0x23 |
31-35 |
專用管理員連接 (DAC) |
0x35 |
53 |
具名管道 |
0x36 |
54 |
虛擬介面卡 (VIA) |
0x38 |
56 |
安全通訊端層 (SSL) |
0x40-0x4F |
64-79 |
共用記憶體 |
0x50-0x5F |
80-95 |
具名管道 |
0x60-0x6F |
96-111 |
VIA |
0x70-0x7F |
112-127 |
HTTP |
0x80-0x8F |
128-143 |
SSL |
0x90-0x9F |
144-159 |
一般 |
下表列出一些常見的錯誤碼。
狀態碼 |
描述 |
---|---|
0x03 |
啟動共用記憶體支援時發生錯誤 |
0x04 |
所有通訊協定已停用 |
0x0A |
無法初始化 TCP/IP 接聽程式 |
0x1C |
伺服器被設定為在叢集環境中接聽特定 IP 位址 |
0x1E |
偵測到網路中有重複的 IP 位址 |
0x35 |
啟動具名管道支援時發生錯誤 |
0x36 |
啟動 VIA 支援時發生錯誤 |
0x38 |
取得或使用 SSL 憑證時發生錯誤 |
0x3A |
無法初始化通訊接聽程式 |
0x40 |
無法初始化 Shared Memory 接聽程式 |
0x50 |
無法初始化 Named Pipe 接聽程式 |
0x60 |
無法初始化 VIA 接聽程式 |
0x70 |
無法初始化 HTTP 接聽程式 |
0x80 |
無法初始化 SSL 支援 |
範例
以下是在啟動期間發生的典型錯誤範例:「TDSSNIClient 初始化失敗,其錯誤為 0x80092004,狀態碼為 0x38。」
值 0x80092004 是 SSPI 錯誤碼,可翻譯為 CRYPT_E_NOT_FOUND。0x38 是一個內部錯誤碼,表示 SQL Server 通訊層無法初始化接聽程式。這個錯誤是由 SSL 所產生,原因是找不到憑證。
所有通訊協定都為停用時傳回的錯誤
所有的通訊協定都為停用時,可能會收到下列錯誤:
「錯誤:17182,嚴重性:16,狀態:1."
「TDSSNIClient 初始化失敗,其錯誤為 0xd,狀態碼為 0x4。」
「錯誤:17182,嚴重性:16,狀態:1."
「TDSSNIClient 初始化失敗,其錯誤為 0xd,狀態碼為 0x1。」
「錯誤:17826,嚴重性:18,狀態:3。」
「由於網路程式庫發生內部錯誤而無法啟動網路程式庫。若要確定其原因,請檢閱錯誤記錄檔中此錯誤的前一個錯誤。」
「錯誤:17120,嚴重性:16,狀態:1。」
「SQL Server 無法繁衍 FRunCM 執行緒。請檢查 SQL Server 錯誤記錄檔與 Windows 事件記錄檔,以取得可能發生之相關問題的詳細資訊。」