標籤:
SQLserver目前的主要3種協議為:Shared Memory、TCP/IP 和 Named Pipe
SharedMemory:
Shared Memory最快最簡單的協議,使用SharedMemory協議的用戶端僅可以串連到同一台伺服器上的SQLserver執行個體。如果其他協議有誤,可以通過Shared Memory串連到本機伺服器進行故障處理。
TCP/IP:
TCP/IP 是Internet上使用廣泛的通訊協定,它包括路由網路通訊協定的標準,提供進階的安全功能。
NamedPipe:
Named Pipe 是為區域網路而開發的協議。具名管道運行在TCP、NETBEUI等基礎協議之上,並不是一個基層網路傳送協議。用戶端串連具名管道的時候,它會首先訪問伺服器的IPC$共用,訪問IPC$共用必須通過Windows認證協議。如果沒有訪問SQLserver伺服器的檔案系統的許可權,就無法使用具名管道訪問SQLserver。
用戶端使用具名管道串連的基本過程如下:
(1) SQLserver伺服器使用createNamedPipe函數建立具名管道並對其進行監聽。
(2) 用戶端使用createFile和writeFile函數試圖串連到伺服器的具名管道。
如果用戶端和SQLserver在同一個本網裡,有能通過Windows認證,可使用Named Pipe協議。如果用戶端和SQLserver是誇網段,而Windows認證又不那麼容易,還是使用TCP、IP協議。
SQLserver協議的選擇:伺服器網路通訊協定配置開啟某個網路通訊協定,用戶端才可以選擇使用。用戶端也可以配置連線協定的先後順序,讓串連優先嘗試串連某個協議。用戶端可以設定SQLserver服務的別名,指定串連的協議連接埠。用戶端可以緩衝上次的串連資訊。
SQLserver網路設定:
開啟“SQLserver組態管理員”,選擇“SQLserver網路設定”,可設定伺服器端的訪問協議。
執行命令cliconfg.exe開啟“用戶端網路工具 + 生產力”,也可以設定。
SQLserver組態管理員中的“SQLserver網路設定”儲存在註冊表位置為:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MicrosoftSQL Server\MSSQL10_50.MSSQLSERVER\MSSQLServer\SuperSocketNetLib
SQLserver用戶端協議配置:
開啟“SQLserver組態管理員”,選擇“SQL Native Client 10.0 配置”,可設定用戶端的訪問協議。
如果沒有安裝用戶端工具,可以開啟註冊表修改:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client
SQLserveraliases(別名)配置:
預設情況下,SQL Server 使用“共用記憶體”協議串連到 SQL Server 的本地執行個體,使用“TCP/IP”或“具名管道”串連到其他電腦上的 SQL Server 執行個體。在以下情況下建立別名:使用 TCP/IP、具名管道或 VIA 並且希望提供自訂連接字串時;希望使用伺服器名稱之外的其他名稱進行串連時。
預設情況下,Microsoft Windows XP Service Pack 2 將啟用 Windows 防火牆,這將預設關閉連接埠1433。因為 Microsoft SQL Server 通過連接埠 1433 進行通訊,因此,如果將 SQL Server 配置為使用 TCP/IP 偵聽傳入用戶端串連,則必須重新開啟該連接埠。
給別名之後,本地用戶端串連本機伺服器執行個體時,可以串連進去。看到使用的是TCP串連。
但是在區域網路內的其他電腦串連時卻串連不上
(註:伺服器端的防火牆已經關閉。資料庫也允許了遠端存取。如果ip正常,伺服器名稱ping不同,可能DNS問題。實在不行,更改本地C:\WINDOWS\system32\drivers\hosts,綁定伺服器名稱和IP地址。再Telnet 檢查連接埠)
另一種串連方式是給定額外的串連參數:;SERVER=192.168.1.11;DATABASE=master,伺服器名任意填寫。
連接埠:
SQLserver TCP/IP協議預設監聽1433連接埠,SQLserver伺服器將在該連接埠上監聽並接受用戶端的TCP/IP通訊端串連請求。可以更改預設連接埠號碼, TCP用戶端和伺服器串連時,用戶端必須分配一個動態連接埠,預設情況下這個動態連接埠的分配範圍為 1024-5000。
設定TCP串連設定及連接埠範圍的註冊表路徑如下:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters
連接埠範圍(由IANA 保留):0 到 1023
· 臨時連接埠範圍:1025 到5000 註冊表設定值
· 可用作特定連接埠:從0 到65535 的任何未封鎖連接埠
· 保留連接埠的可用範圍:1025 到5000 以及 49152 到65535
· 封鎖連接埠的可用範圍:5001 到65535
註冊表預留了1433和1434連接埠:
更多參考:Windows 伺服器系統的服務概述和網路連接埠要求
SQLServer 網路通訊協定(一)