Sql-Server

SSMS 登錄框的有效連接字元串是什麼?

  • September 18, 2018

SSMS 登錄框的有效連接字元串是什麼?

每隔一段時間,我就必須連接到具有某些特定配置設置的 SQL Server 實例,或者連接到沒有可用主機名的 DMZ 中,或者我必須通過 SSMS 或 SQLCMD 連接到專用管理員連接 (DAC) . 因為我很少通過特定埠或使用 DAC 連接到 SQL Server,所以我往往會忘記建立和執行連接的確切語法選項。然後,我將不得不無數次再次搜尋網際網路以檢索確切的連接字元串,並且經常會因為找不到所需的資訊而感到沮喪。

研究

我將閱讀之前發佈在 Serverfault、Stackoverflow 和 DBA 上的所有問題和答案。

伺服器故障

$$ 1 $$ DAC 連接埠 SQL Server 2005 SP3

$$ 2 $$ 遠端 SQL 伺服器連接失敗

$$ 3 $$ SQL Server 2008 R2 遠端連接 堆棧溢出

$$ 4 $$ 如何在 SQL Server 連接字元串中指定埠號? 數據庫管理員

$$ 5 $$ DAC 連接錯誤 微軟

此外,我將在 Microsoft 網站上搜尋相關文章:

$$ 6 $$ 如何配置 SQL Server 以偵聽特定埠

$$ 7 $$ 將 Windows 防火牆配置為允許 SQL Server 訪問

$$ 8 $$ 表面積配置

$$ 9 $$ 如何配置 SQL Server 以偵聽不同 IP 地址上的不同埠?

$$ 10 $$ 將伺服器配置為偵聽特定 TCP 埠(SQL Server 配置管理器)

$$ 11 $$ 數據庫管理員的診斷連接 布倫特奧扎

Kendra Little 有一篇關於 DAC 一些有趣方面的文章。

$$ 12 $$ 專用管理員連接:為什麼需要它、何時需要它以及如何判斷誰在使用它 附帶說明:有時 DAC 連接也稱為 ADMIN 連接。

我發現最後從來沒有一個簡單的連接字元串的實際摘要輸入到 SSMS 登錄框,也沒有添加到 SQLCMD 的內容。

這個問題和以下答案旨在總結我迄今為止發現的內容,並將資訊放入一篇知識庫文章中。

實際問題

給定 SQL Server Standard Edition 的以下設置:

Servername.....:    SERVERNAME
IP address.....:    123.1.2.3

1st instance (default instance):
CNAME/Alias....:    SERVERNAME-I01
Name...........:    MSSQLSERVER
Port...........:    1433 (TCP)
IP address.....:    123.1.2.3
DAC Port.......:    1434 (TCP)

2nd instance (default ip & port configuration according to [7]):
CNAME/Alias....:    SERVERNAME-I02
Name...........:    Instance2
Port...........:    dynamic (TCP)
IP address.....:    123.1.2.3
DAC port.......:    dynamic (TCP)

3rd instance (dedicated IP and port):
CNAME/Alias....:    SERVERNAME-I03
Name...........:    Instance3
Port...........:    1433 (TCP)
IP address.....:    123.1.2.4
DAC port.......:    dynamic (TCP)

Browser Service:    1434 (UDP)
Browser service:    ON

…我可以在 SSMS 登錄框中輸入的每個實例的有效連接字元串是什麼

  1. …與主機名?
  2. …別名(CNAME)?
  3. …有一個IP地址?
  4. …對於“專用管理員連接”(DAC aka ADMIN :)?

假設

  1. 根據6、78中提到的 Microsoft 文件,伺服器防火牆被禁用或配置。對於 LAN 內的任何網路防火牆(包括與 DMZ 伺服器的連接)也是如此。
  2. 除預設實例外,其他實例已手動配置為根據9偵聽不同的 IP 地址,在此範例中已配置為偵聽固定埠10
  3. 在某些情況下,DAC 將根據1112啟用。

有多種可能性,我將嘗試根據編號的問題來回答它們。

SSMS 登錄框的有效連接字元串為:

一審

  1. 使用主機名
  • SERVERNAME
  • SERVERNAME,1433
  1. 使用 CNAME/別名
  • SERVERNAME-I01
  • SERVERNAME-I01,1433
  1. 使用 IP 地址
  • 123.1.2.3
  • 123.1.2.3,1433
  1. 對於專用管理員連接 (DAC);取決於瀏覽器服務狀態

a) 瀏覽器服務開啟

  • ADMIN:SERVERNAME

  • ADMIN:SERVERNAME-I01

  • ADMIN:123.1.2.3b) 瀏覽器服務關閉

  • SERVERNAME,1434

  • SERVERNAME-I01,1434

  • 123.1.2.3,1434

第二次

因為第二個實例有一個用於 SQL Server 實例的動態埠和一個用於 DAC 的動態埠,所以在連接到 SQL Server 之前,必須提前從 ERROR 日誌文件中檢索這些埠。有關詳細資訊,請參見7。在此範例中,我將假設埠 63390 用於 SQL Server 實例,埠 63389 用於專用管理員連接。Microsoft 建議修復 IP 埠,從而允許您正確配置防火牆6

  1. 使用主機名
  • SERVERNAME\Instance2(瀏覽器服務開啟)
  • SERVERNAME,63390(瀏覽器服務關閉)
  1. 使用 CNAME\別名
  • SERVERNAME-I02(瀏覽器服務開啟)
  • SERVERNAME-I02,63390(瀏覽器服務關閉)
  1. 使用 IP 地址
  • 123.1.2.3,63390(瀏覽器服務打開或關閉)

使用不帶埠的 IP 地址,會將您連接到預設實例 4. 對於專用管理員連接 (DAC);真的取決於瀏覽器服務狀態

a) 瀏覽器服務開啟

  • ADMIN:SERVERNAME\Instance2
  • ADMIN:SERVERNAME-I02\Instance2
  • ADMIN:123.1.2.3\Instance2

始終需要實例名稱,因為 CNAME 或 IP 地址引用與預設標準實例相同的 IP 地址b) 瀏覽器服務關閉

  • SERVERNAME,63389
  • SERVERNAME-I01,63389
  • 123.1.2.3,63389

第三次

  1. 使用主機名
  • SERVERNAME\Instance3

由於此實例使用與預設實例相同的 SQL Server 埠,但 IP 地址不同,因此該SERVERNAME,1433表示法不起作用。您將連接到預設實例。 2. 使用 CNAME/別名

  • SERVERNAME-I03(瀏覽器服務開啟)
  • SERVERNAME-I03,1433(瀏覽器服務關閉)
  1. 使用 IP 地址
  • 123.1.2.4
  • 123.1.2.4,1435
  1. 對於專用管理員連接 (DAC);取決於瀏覽器服務狀態

a) 瀏覽器服務開啟

  • ADMIN:SERVERNAME\Instance3

  • ADMIN:SERVERNAME-I03(有效,因為 CNAME 引用了專用 IP 地址)

  • ADMIN:123.1.2.4b) 瀏覽器服務關閉

  • SERVERNAME,63389(有效,因為埠引用了 DAC 的專用埠)

  • SERVERNAME-I01,63389(因為 CNAME 和埠引用了專用實例/DAC,所以有效)

  • 123.1.2.4,63389


瀏覽器服務

如果瀏覽器服務已禁用或尚未啟動,則無法將連接路由到相關埠。在這種情況下,必須從實例的 ERRORLOG 文件中檢索 DAC 埠。您應該會找到一條類似Dedicated admin connection support was established 用於在埠 63389 上遠端偵聽的行。對於 DAC 埠。此埠號是 DAC 將偵聽的埠。如果您的瀏覽器服務已關閉,您需要為專用管理員連接提供相關埠,並為 SQL Server 連接提供相應埠。使用埠時不必將實例名稱添加到連接字元串,因為該埠是為實例保留的。

簡而言之,瀏覽器服務負責將實例名稱轉換為埠。如果瀏覽器服務沒有執行,那麼您必須提供埠而不是實例名稱。


參考資料

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