當用戶端電腦嘗試連線到 SQL Server 實例時,SQL Server 用戶端可能會變更通訊協定
本文介紹當用戶端計算機嘗試連線到 SQL Server 實例時,SQL Server 用戶端可能會變更通訊協定。
原始產品版本: SQL S
原始 KB 編號: 328383
摘要
具有 Microsoft 數據存取元件 (MDAC) 2.6 版或更新版本的用戶端電腦,可以嘗試使用多個通訊協定或進程間通訊 (IPC) 機制來建立與 SQL Server 的連線。
其他相關資訊
已對用戶端網路連結庫進行增強,Dbnetlib.dll MDAC 2.6 版和更新版本。 使用 MDAC 2.6 版和更新版本時,如果有多個通訊協定可用,而且第一個通訊協定的連線嘗試失敗,用戶端應用程式會立即嘗試使用其中一個其他通訊協定。
根據預設,用戶端具有 TCP 和命名管道作為可用的通訊協定。 您可以使用 SQL Server Client 公用程式來操作通訊協定排序。 用戶端應用程式會以用戶端電腦上指定的順序使用通訊協定。 通訊協定順序會儲存在 ProtocolOrder 值下的下列登錄機碼位置:
HKLM\Software\Microsoft\MSSQLServer\Client\SuperSocketNetLib
如果您使用 SQL Server 2005,通訊協定順序會儲存在 ProtocolOrder 登錄專案中的下列登錄子機碼下:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SNI<version>
例如,如果用戶端電腦同時提供 TCP 和命名管道,則順序為:
- TCP
- 命名管道
當用戶端計算機嘗試對伺服器進行 TCP 連線,而連線嘗試傳回非零的傳回碼時,用戶端會使用清單中的下一個通訊協定,也就是命名管道,以透明方式嘗試連線。 在此案例中,客戶端無法建立 TCP 連線;不過,用戶端已成功建立命名管道連線。
注意事項
用戶端不會收到錯誤,指出第一個通訊協議失敗。
如果用戶端應用程式使用第二個通訊協定,而且它也會傳回錯誤,則會將錯誤傳回給用戶端。
如果您使用下列其中一種方法建立別名,用戶端應用程式會使用別名資訊來建立與伺服器的連線,而不會使用任何其他通訊協定。
- 使用 SQL Server用戶端網路公用程式
- 使用 SQL Server 組態管理員
- 當您在 DSN (建立 ODBC 資料來源名稱時)
如果您想要控制用戶端應用程式用於每次連線嘗試的通訊協定,但不允許用戶端嘗試多個通訊協定,您可以執行下列其中一項:
使用 SQL 用戶端網路公用程式或 SQL Server 組態管理員,藉由指定您偏好的通訊協定來建立別名。
在您的 連接字串 中指定通訊協定。 例如:
DSN=DSNName;SERVER=servername;DATABASE=YourDataBaseName;Network=DBMSSOCN;Address=IP_Address,1433;UID=YourUID;PWD=YourPassword;
在此範例中,您會將網路協定指定為
DBMSSOCN
,這表示您想要使用 TCP/IP 通訊協定。 如果您在 連接字串 內指定通訊協定,Dbnetlib 只會使用指定的通訊協定,而且不會嘗試任何其他通訊協定。 同樣地,若只要啟用命名管道通訊協定,請使用類似以下的 連接字串:DSN=DSNName;SERVER=servername;DATABASE=YourDataBaseName;Network=DBNMPNTW;Address=\\.\pipe\sql\query;UID=YourUID;PWD=YourPassword;
使用用戶端網路公用程式移除其他通訊協定。
引用
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應