SSMS 登录框的有效连接字符串是什么?

Joh*_* N. 6 sql-server ssms sqlcmd connectivity

SSMS 登录框的有效连接字符串是什么?

每隔一段时间,我将不得不连接到具有某些特定配置设置的 SQL Server 实例或在没有可用主机名的 DMZ 中,或者我将不得不通过 SSMS 或 SQLCMD 连接到专用管理连接 (DAC) . 因为我很少通过特定端口或使用 DAC 连接到 SQL Server,所以我往往会忘记启动和运行连接的确切语法选项。然后,我将不得不无数次再次搜索 Internet以检索确切的连接字符串,并且经常会因为找不到所需信息而感到沮丧。

研究

我将阅读之前发布在 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 标准版的以下设置:

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
Run Code Online (Sandbox Code Playgroud)

...我可以在 SSMS 登录框中输入的每个实例的有效连接字符串是什么

  1. ...与主机名?
  2. ...别名(CNAME)?
  3. ...有一个IP地址?
  4. ...对于“专用管理员连接”(DAC aka ADMIN:)?

假设

  1. 服务器防火墙根据中提到的Microsoft文档或者去激活或配置678。这也适用于 LAN 内的任何网络防火墙(包括与 DMZ 服务器的连接)。
  2. 除了默认实例外,其他实例已根据9手动配置为侦听不同的 IP 地址,并且在此示例中已配置为侦听固定端口10
  3. 在某些情况下,DAC 将根据1112启用。

Joh*_* N. 5

有多种可能性,我将尝试根据编号的问题来回答它们。

SSMS 登录框的有效连接字符串为:

第一审

  1. 使用主机名
    • SERVERNAME
    • SERVERNAME,1433
  2. 使用 CNAME/别名
    • SERVERNAME-I01
    • SERVERNAME-I01,1433
  3. 使用IP地址
    • 123.1.2.3
    • 123.1.2.3,1433
  4. 对于专用管理连接 (DAC);取决于浏览器服务状态

    a) 浏览器服务开启

    • ADMIN:SERVERNAME
    • ADMIN:SERVERNAME-I01
    • ADMIN:123.1.2.3

    b) 浏览器服务关闭

    • SERVERNAME,1434
    • SERVERNAME-I01,1434
    • 123.1.2.3,1434

二审

由于第二个实例具有用于 SQL Server 实例的动态端口和用于 DAC 的动态端口,因此在连接到 SQL Server 之前必须提前从错误日志文件中检索端口。请参阅7了解更多信息。在此示例中,我假设端口 63390 用于 SQL Server 实例,端口 63389 用于专用管理连接。Microsoft 建议修复 IP 端口,从而允许您正确配置防火墙6

  1. 使用主机名
    • SERVERNAME\Instance2(浏览器服务开启)
    • SERVERNAME,63390(浏览器服务关闭)
  2. 使用 CNAME\别名
    • SERVERNAME-I02(浏览器服务开启)
    • SERVERNAME-I02,63390(浏览器服务关闭)
  3. 使用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(浏览器服务关闭)
  3. 使用IP地址

    • 123.1.2.4
    • 123.1.2.4,1435
  4. 对于专用管理连接 (DAC);取决于浏览器服务状态

    a) 浏览器服务开启

    • ADMIN:SERVERNAME\Instance3
    • ADMIN:SERVERNAME-I03(之所以有效,是因为 CNAME 引用了专用 IP 地址)
    • ADMIN:123.1.2.4

    b) 浏览器服务关闭

    • SERVERNAME,63389(有效是因为该端口引用了 DAC 的专用端口)
    • SERVERNAME-I01,63389(之所以有效,是因为 CNAME 和端口引用了专用实例/DAC)
    • 123.1.2.4,63389

浏览器服务

如果浏览器服务被禁用或尚未启动,则连接无法路由到相关端口。在这种情况下,必须从实例的 ERRORLOG 文件中检索 DAC 端口。对于 DAC 端口,您应该会找到一条类似于Dedicated admin Connection support wasbuilt for Listening Remote on port 63389. 的行。该端口号是 DAC 将侦听的端口。如果您的浏览器服务已关闭,您需要为专用管理连接提供相关端口,并为 SQL Server 连接提供相应的端口。使用端口时不必将实例名称添加到连接字符串中,因为该端口是为实例保留的。

简而言之,浏览器服务负责将实例名称转换为端口。如果浏览器服务未运行,则您必须提供端口而不是实例名称。


参考资料