Sql-Server

如何通過 IP 連接到遠端 SQL Server 實例

  • August 15, 2022

我有一個安裝了 SQL 2016 的遠端開發框。遠端,我可以通過 IP 訪問該伺服器就好了。對於我的問題,假設 IP 地址是 1.1.1.1。

現在我安裝了一個實例名稱為“newinstance”的新 SQL 2019 版本。我正在嘗試使用 1.1.1.1\newinstance 遠端訪問它,但我收到一個網路錯誤,指出它無法連接。

同樣,我可以通過 IP 訪問 2016 預設實例就好了。我無法訪問 2019 命名實例。

  • 我驗證了 2019 實例已啟用遠端連接。
  • 當本地登錄到遠端機器時,我能夠很好地連接到 2019 實例。

有人可以給出一些為什麼這不起作用的原因嗎?

在此處輸入圖像描述

命名實例正在偵聽安裝時隨機分配的 TCP 埠。如果禁用 SQL Browser 服務,客戶端必須知道埠號。如果您的 sql2019 實例正在偵聽埠 59036,您將連接到 1.1.1.1,59036。

您可以在 SQL Server 2019 配置管理器中找到該埠。(抱歉,我附近目前沒有 SQL Server 來提供查找它的確切說明)

如果 SQL Browser 服務處於活動狀態,則您可能遇到 JD 建議的防火牆問題

更新:感謝@eric-prévost 的回答。它引導我走上了一條道路,我發現了一些可能對我在這裡發布的其他人有用的東西。在我的配置中,Windows 防火牆已關閉,因此任何入站/出站規則均不適用。

關鍵是要弄清楚命名實例在哪個埠下執行。我發現的一個建議是查看 Sql Server 配置管理器,它會顯示埠。比如2016上執行的預設實例,我可以看到預設埠1433。

在此處輸入圖像描述

但是,當我查看我的命名實例時,沒有列出埠。所以這很令人困惑。它必須正在偵聽埠,但未列出。我嘗試將埠更改為固定值,重新啟動 SQL 伺服器,但仍然無法正常工作。

在此處輸入圖像描述

事實證明,您可以通過獲取程序 ID 並將其與 netstat 一起使用來獲取埠,從而找到它正在偵聽的埠。這就是出現的情況。我為兩個程序 ID 發出了 netstat 命令,並看到正在使用的埠是 64420。

在此處輸入圖像描述

然後我可以使用…遠端連接到我的實例

10.168.13.37\newinstance,64420

注意:我的伺服器被分配了多個 IP,所以不要被 IP 地址之間的差異所迷惑。兩者都有效。兩者都在防火牆後面,所以不要四處尋找那些。你不會找到太多!

引用自:https://dba.stackexchange.com/questions/315590