SQL Server中網路通訊協定的比較與選擇

來源:互聯網
上載者:User

SQL Server中網路通訊協定

若要串連到 SQL Server 資料庫引擎,必須啟用網路通訊協定。MicrosoftSQL Server 可同時通過多種協議處理請求。用戶端用單個協議串連到 SQL Server。如果用戶端程式不知道 SQL Server 正在偵聽哪個協議,可以配置用戶端按順序嘗試多個協議。使用 SQL Server 組態管理員啟用、禁用以及配置網路通訊協定。

Shared Memory 
Shared Memory 是可供使用的最簡單協議,沒有可配置的設定。由於使用 Shared Memory 協議的用戶端僅可以串連到同一台電腦上啟動並執行 SQL Server 執行個體,因此它對於大多數資料庫活動而言是沒用的。如果懷疑其他協議配置有誤,請使用 Shared Memory 協議進行故障排除。 注意 
使用 MDAC 2.8 或更早版本的用戶端不能使用 Shared Memory 協議。如果這些用戶端嘗試使用,將自動切換為 Named Pipes 協議。

TCP/IP 
TCP/IP 是 Internet 上廣泛使用的通用協議。它與互連網路中硬體結構和作業系統各異的電腦進行通訊。TCP/IP 包括路由網路流量的標準,並能夠提供進階安全功能。它是目前在商業中最常用的協議。將電腦配置為使用 TCP/IP 可能會很複雜,但大多數連網的電腦已經配置正確。若要配置未在 SQL Server 組態管理員中出現的 TCP/IP 設定,請參閱 Microsoft Windows 文檔。

Named Pipes 
Named Pipes 是為區域網路而開發的協議。記憶體的一部分被某個進程用來向另一個進程傳遞資訊,因此一個進程的輸出就是另一個進程的輸入。第二個進程可以是本地的(與第一個進程位於同一台電腦上),也可以是遠端(位於連網的電腦上)。

 

VIA 
虛擬介面適配器 (VIA) 協議和 VIA 硬體一同使用。有關如何使用 VIA 的資訊,請與硬體供應商聯絡。 重要提示 
不推薦使用 VIA 協議。後續版本的 Microsoft SQL Server 將刪除該功能。請避免在新的開發工作中使用該功能,並著手修改當前還在使用該功能的應用程式。

Named Pipes 與 TCP/IP 通訊端 
在快速區域網路 (LAN) 環境中,傳輸控制通訊協定或 網際網路通訊協定 (IP) (TCP/IP) 通訊端用戶端和 Named Pipes 用戶端在效能方面不相上下。但是,網路速度越慢[如在廣域網路 (WAN) 或撥號網路上],TCP/IP 通訊端用戶端與 Named Pipes 用戶端的效能差異越明顯。這是因為處理序間通訊 (IPC) 的機制在對等項間的通訊方式不同。

對於 Named Pipes,通常網路通訊互動性更強。一個對等方直到另一個對等方使用讀取命令請求資料時才發送資料。在開始讀取資料前,網路讀取一般包括一系列窺視 Named Pipes 的資訊。這在慢速網路中可能開銷非常大,並會導致過多的網路流量,其他的網路用戶端反過來也會受到影響。

闡明所討論的是本地管道還是網路管道也很重要。如果伺服器應用程式在運行 SQL Server 執行個體的電腦的本地運行,則可以選擇本地 Named Pipes 協議。本地 Named Pipes 以核心模式運行且速度非常快。

對於 TCP/IP 通訊端,資料轉送的效率更高,開銷也更少。資料轉送還可以利用 TCP/IP 通訊端效能增強機制的優點,例如視窗化、延遲確認等。這在慢速網路中可能非常有益。對於應用程式的不同類型,這類效能差異可能非常大。

TCP/IP 通訊端還支援積壓隊列。試圖串連到 SQL Server 時,與可能導致管道忙錯誤的 Named Pipes 相比,該隊列可以帶來有限的平穩效果。

通常,TCP/IP 在慢速 LAN、WAN 或撥號網路中效果較好。而當網路速度不成問題時,Named Pipes 則是更好的選擇,因為其功能更強、更便於使用並具有更多的配置選項。
啟用協議

該協議必須在用戶端和伺服器上都啟用才能正常工作。伺服器可以同時監聽所有已啟用的協議的請求。用戶端電腦可以選取一個協議,或按照 SQL Server 組態管理員中列出的順序嘗試這些協議。 注意

MicrosoftSQL Server 不支援 Banyan VINES 順序包協議 (SPP)、多協議、AppleTalk 或 NWLink IPX/SPX 網路通訊協定。以前使用這些協議串連的用戶端必須選擇其他協議才能串連到 SQL Server。

有關如何配置協議和串連到資料庫引擎的簡短教程,請參閱教程:資料庫引擎入門。

============================================================================

1. 什麼是具名管道?
與TCP/IP(傳輸控制通訊協定或internet協議)一樣,具名管道是一種通訊協議。它一般用於區域網路中,因為它要求用戶端必須具有訪問伺服器資源的許可權。
要解釋這個問題,我還是摘錄微軟官方的資料比較好(見上面“SQL Server中網路通訊協定”)

2. 為什麼用具名管道?
使用具名管道的原因一般有兩個方面
提高速度
假設同樣在區域網路中,那麼使用具名管道協議會比TCP/IP協議快一些。
增加安全性
因為具名管道是只能用於區域網路的,那麼如果伺服器關閉了TCP/IP協議而僅啟用具名管道,就可以避免一些安全隱患

 

3. 如何使用具名管道?
要使用具名管道串連到SQL Server,用戶端代碼中的連接字串大致的文法是這樣的
"server=.;database=northwind;uid=sa;pwd=pass@word;Network Library=dbnmpntw"

如果伺服器是具名執行個體,則
"server=./instanceName;database=northwind;uid=sa;pwd=pass@word;Network Library=dbnmpntw"

【注意】必須在伺服器啟用named pipe協議,並且啟動Broswer服務
為了避免在連接字串中這麼麻煩,也為了避免泄露我們串連資料的一些機密資訊。SQL Server Native Client還支援定義別名

如果建立好了別名,則可以在連接字串中直接這樣寫
"server=Myserver;database=master;integrated security=true;"
看起來和以前我們定義ODBC資料來源很類似,不是嗎?
那麼,如果這一串聯接字串被泄露,即便是別有用心的人,也不可能猜到我們的伺服器到底是什麼名字,而且我們使用了什麼協議串連的。

============================================================================

選擇網路通訊協定:

http://msdn.microsoft.com/zh-cn/library/ms187892.aspx (微軟官方)
SQL Server Native Client 編程:

http://msdn.microsoft.com/zh-cn/library/ms130892.aspx (微軟官方)

SQL Server中的具名管道(named pipe)及其使用:

http://www.cnblogs.com/chenxizhang/archive/2009/04/23/1441913.html (cnblogs)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.