如何:設定 Database Engine 接聽多個 TCP 通訊埠
SQL Server 啟用 TCP/IP 時,Database Engine 將會在由 IP 位址及 TCP 通訊埠編號構成的連接點上接聽內送連接。以下程序會建立表格式資料流 (TDS) 端點,如此 SQL Server 將可以接聽其他 TCP 通訊埠。
必須建立第二個 TDS 端點的原因包括:
設定防火牆以對特定子網路的本機用戶端電腦,限制存取預設端點。建立該防火牆對網際網路公開的新端點,以及對伺服器支援團隊限制連接此端點的權限,為您的支援團隊維護 SQL Server 的網際網路存取。
要在使用 Non-Uniform Memory Access (NUMA) 時,相似化特定處理器的連接。如需如何將 TCP/IP 通訊埠設為 NUMA 節點的詳細資訊,請參閱<SQL Server 如何支援 NUMA>。
[!附註]
當您建立一個新的 Transact-SQL 端點時,就會撤銷預設 TDS 端點的 public 連接權限。如果預設端點需要存取 public 群組,請使用 GRANT CONNECT ON ENDPOINT::[TSQL Default TCP] to [public] 陳述式重新套用此權限。
設定 TDS 端點包含下列步驟,您能夠以任意順序來完成:
建立 TCP 通訊端的 TDS 端點,然後還原預設端點的存取權 (如有必要)。
對想要的伺服器主體授與端點存取權。
指定選取 IP 位址的 TCP 通訊埠編號。
如需有關預設 Windows 防火牆設定的詳細資訊以及影響 Database Engine、Analysis Services、Reporting Services 和 Integration Services 之 TCP 通訊埠的描述,請參閱<將 Windows 防火牆設定成允許 SQL Server 存取>。
建立 TDS 端點
發出以下陳述式以為伺服器上所有可用的 TCP 位址,為通訊埠 1500 建立一個稱為 CustomConnection 的端點。
USE master GO CREATE ENDPOINT [CustomConnection] STATE = STARTED AS TCP (LISTENER_PORT = 1500, LISTENER_IP =ALL) FOR TSQL() ; GO
授與端點的存取權
發出以下陳述式以對公司網域的 SQLSupport,授與 CustomConnection 端點的存取權。
GRANT CONNECT ON ENDPOINT::[CustomConnection] to [corp\SQLSupport] ; GO
設定 SQL Server Database Engine 接聽其他 TCP 通訊埠。
在「SQL Server 組態管理員」中,展開 [SQL Server 網路組態],然後按一下 [<instance_name> 的通訊協定]。
展開 [通訊協定: <instance_name>],然後按一下 [TCP/IP]。
在右窗格中,以滑鼠右鍵按一下想要啟用的停用 IP 位址,再按一下 [啟用]。
以滑鼠右鍵按一下 [IPAll],再按一下 [內容]。
在 [TCP 通訊埠] 方塊中,輸入想要 Database Engine 接聽的通訊埠,並以逗號分隔。在此範例中,如果列出預設通訊埠 1433,請輸入 ,1500,如此該方塊會讀為 1433,1500,然後按一下 [確定]。
[!附註]
如果未啟用所有 IP 位址上的通訊埠,請只有在想要的位址,以內容方塊設定其他通訊埠。接著在主控台窗格中,以滑鼠右鍵按一下 [TCP/IP],按一下 [內容],然後在 [全部接聽] 方塊中選取 [否]。
在左窗格中,按一下 [SQL Server 服務]。
在右窗格中,以滑鼠右鍵按一下 [SQL Server: <instance_name>],然後按一下 [重新啟動]。
當 Database Engine 重新啟動時,錯誤記錄檔將會列出 SQL Server 正在接聽的通訊埠。
連接新的端點
使用信任連接,並假設使用者是 [corp\SQLSupport] 群組的成員,在稱為 ACCT 的伺服器上發出以下陳述式,連接 SQL Server 之預設執行個體的 CustomConnection 端點。
sqlcmd -SACCT,1500