如何:設定 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 通訊埠。

  1. 在「SQL Server 組態管理員」中,展開 [SQL Server 網路組態],然後按一下 [<instance_name> 的通訊協定]

  2. 展開 [通訊協定: <instance_name>],然後按一下 [TCP/IP]

  3. 在右窗格中,以滑鼠右鍵按一下想要啟用的停用 IP 位址,再按一下 [啟用]

  4. 以滑鼠右鍵按一下 [IPAll],再按一下 [內容]

  5. [TCP 通訊埠] 方塊中,輸入想要 Database Engine 接聽的通訊埠,並以逗號分隔。在此範例中,如果列出預設通訊埠 1433,請輸入 ,1500,如此該方塊會讀為 1433,1500,然後按一下 [確定]

    [!附註]

    如果未啟用所有 IP 位址上的通訊埠,請只有在想要的位址,以內容方塊設定其他通訊埠。接著在主控台窗格中,以滑鼠右鍵按一下 [TCP/IP],按一下 [內容],然後在 [全部接聽] 方塊中選取 [否]

  6. 在左窗格中,按一下 [SQL Server 服務]

  7. 在右窗格中,以滑鼠右鍵按一下 [SQL Server: <instance_name>],然後按一下 [重新啟動]

    當 Database Engine 重新啟動時,錯誤記錄檔將會列出 SQL Server 正在接聽的通訊埠。

連接新的端點

  • 使用信任連接,並假設使用者是 [corp\SQLSupport] 群組的成員,在稱為 ACCT 的伺服器上發出以下陳述式,連接 SQL Server 之預設執行個體的 CustomConnection 端點。

    sqlcmd -SACCT,1500