Sql-Server

SQL Server 客戶端如何連接?

  • July 13, 2020
  1. 我在這篇文章中問了兩個問題。如果我在 netstat 中看到埠 1433 的未命名實例的活動,其 tcp 地址未啟用,這意味著什麼?
  2. 配置與我的第二個命名實例一起出現的動態埠的首選方法是什麼?以下是詳細資訊:

這篇文章與我的第一篇文章略有不同,因為在上一篇文章中,我忽略了預設的未命名實例的一個關鍵細節,即我找不到任何 TCP 地址已啟用的證據。這裡有一些背景:

我有一個安裝了未命名和命名 MS SQL SERVER 實例的 Windows 2016 伺服器。兩者都打開了 TCP 和記憶體連接,直到您到達 TCP 的協議部分。

兩個實例使用相同的 IP 地址。未命名的實例使用埠 1433;命名實例使用 49365。

首先安裝了未命名的實例,因此分配了埠 1433。伺服器和客戶端上的防火牆(Windows 防火牆)設置為允許必要的 UDP 和 TCP 流量。

下面是兩張圖片,表示未命名實例的大部分埠配置。請注意,所有設置的啟用都設置為,沒有動態埠,使用的埠是 1433。

未命名實例 TCP 埠部分 1

未命名實例 TCP 埠部分 2

該數據庫屬於供應商,其客戶能夠連接到數據庫,所以我試圖找出發生的情況,希望資訊能幫助我連接到命名實例。

我已經嘗試了上一篇文章中的所有建議,線上閱讀,我的命名數據庫能夠從 2008 年的舊 SQL Server 數據庫進行導入。

使用 netstat,我可以看到埠 1433 正在使用中,因此為命名實例選擇它是沒有意義的。我應該只選擇一個我知道不會使用或不太可能使用的埠嗎?

我相信我們在這裡有幾個誤解,所以讓我們試著一一理清,看看最終是否能澄清大局。

您所說的“未命名實例”就是我們所說的預設實例。僅供參考。

獲取埠 1433 並不是第一個安裝的實例。1433 是預設實例知名埠。這是在我們不能擁有多個實例的時代(SQL Server 2000 之前的版本)。

命名實例在首次啟動時從 Windows 動態範圍中獲取埠號。“動態”並不意味著每次啟動時都有不同的埠號。分配的埠儲存在系統資料庫中,並嘗試在以下啟動時使用。“動態”控制如果失敗會發生什麼(即,上次使用的埠現在很忙)。“動態”的意思是“從 Windows 獲取不同的埠”。另一個選項表示“無法啟動 SQL 伺服器”。

您在發佈為 IP 被“禁用”的 GUI 中看到的是糟糕的 GUI 展示。各個 IP 部分被最底層的配置 (IPAll) 覆蓋。那裡有一個埠意味著所有IP地址都在使用該埠(據我所知)。歡迎讀者在這裡評論/編輯。

至於您的命名實例,我建議您將 IPAll 下的埠號設置為 0(並且“靜態埠”沒有任何內容)並重新啟動您的 SQL Server。它現在應該從動態 Windows 範圍中獲得一個新埠。

我有一個解決方案,但不一定是最好的解決方案。我取了分配的動態埠 43965,把它當作永久埠;為它分配了命名實例,我可以使用 dbname,port# 進行連接。

是否有一種唯一的首選方式來使用安裝命名實例時分配的動態埠?

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