
在網路上搜尋了幾次透過 Windows 防火牆開啟 SQL Server 連線的最佳方法後,我還沒有找到最佳方法。有誰有保證的方法可以找到 SQL 正在運行的端口,以便您可以在 Windows 防火牆中打開它們?
答案1
如果您只執行一個 SQL Server 實例,並且它為非本機連線啟用了 TCP/IP 傳輸,那麼它很可能會偵聽預設 TCP 連接埠:1433。
如果您有多個實例,或者「單一預設實例」之上的任何其他複雜情況,那麼事情可能會更複雜。您需要為每個實例設定連接埠(預設情況下,它們是半隨機的,這通常對防火牆配置沒有幫助),並且還需要開啟 SQL 瀏覽器服務(通常偵聽 UDP 連接埠 1434,儘管這也可以)重新配置)。
有一組關於 SQL Server 和防火牆的相當詳細的註解:http://msdn.microsoft.com/en-us/library/cc646023.aspx
答案2
您將需要啟動瀏覽器服務來解析非預設實例。此外,開啟 UDP 1434 將允許按名稱而不是連接埠解析命名實例,因此您不需要使用連接埠。如果您不願意長期打開 UDP 1434,或者您有 DBA 在現場並且可以在本地連接,您可以要求他們通過 SQL Server Mgmt Studio 或 SQLCMD 進行連接,並指定伺服器連接,如下所示:
tcp:伺服器名稱\實例名稱
以 tcp 為前綴將強制建立 tcp 連線。完成此操作後,您可以連接到命名實例並查詢 sys.dm_exec_connections 以查找非預設實例正在運行的端口,如下所示:
SELECT local_tcp_port FROM sys.dm_exec_connections WHERE session_id = @@SPID
答案3
SQL Server 的預設連接埠是 1433