2010-04-18

SQL Server 資料庫連線字串的「Network Library」屬性

在設定資料庫連線字串時,可以在「Network Library」區域,明確設定所使用的「網路程式庫」。

一般而言,使用ComputerName,會比較容易受到外部影響導致延遲,例如: DNS 查閱速度很慢、網域控制站/Kerberos 金鑰發佈中心 (KDC) 速度很慢、連絡 SQL Server Browser 所用的時間以及網路壅塞等。
若使用 IP 位址,加上指定通訊埠等方式,是可以減少上述的延遲。


若要調整「用戶端通訊協定」的順序,可以使用以下的方式:
1. 使用「SQL Server 組態管理員」這類的工具,在「用戶端通訊協定」內,將TCP/IP保持在清單的頂端。
2. 可以在連接字串指定了 Network 屬性,這就會覆寫清單順序。







但在 Microsoft Visual Studio 的設定視窗內,卻有點在圖型介面上的問題,請參考下圖所示:






在設定「TCP/IP 」與「VIA」卻都是顯示一樣的「DBMSGNET」。

但實際上使用的連線字串卻是:
-- TCP/IP
Network Library=dbmssocn

-- VIA (DBMSGNET)
Network Library=dbmsgnet


卻是不同的。



在台灣微軟聯繫後,猜測可能是產品的bug。
在此感謝 Terry Lin 的協助。

適用的環境:
Visual Studio 2008、Visual Studio 2010 中文、英文版本。






以下整理出各種通訊協定所產生的部分連線字串:
Named Pipes (DBNMPNTW):Network Library=dbnmpntw

Shared Memory (DBMSSOCN):Network Library=dbmslpcn

TCP/IP (DBMSGNET):Network Library=dbmssocn

VIA (DBMSGNET):Network Library=dbmsgnet



參考資料:
如何在 ADO 連接字串中設定 SQL Server 網路程式庫
http://support.microsoft.com/kb/238949

當用戶端電腦嘗試連線到 SQL Server 執行個體時,SQL Server 用戶端可能會變更通訊協定
http://support.microsoft.com/kb/328383/zh-tw

PRB: ODBC 連線失敗: SQLState: '08001' DBMSSOCN
http://support.microsoft.com/kb/195566/zh-tw

選擇網路通訊協定
http://msdn.microsoft.com/zh-tw/library/ms187892.aspx

搭配 SQL Server Native Client 使用連接字串關鍵字
http://msdn.microsoft.com/zh-tw/library/ms130822.aspx

沒有留言:

張貼留言