SQL Server 2012 无法使用 ssms 远程连接到命名实例

SQL Server 2012 not able to connect to named instance remotely with ssms

我 运行 SQL Microsoft Windows Server 2012 R2 上的 Server 2012。我是 运行 一个名为 PP 的命名实例。服务器身份验证设置为 "SQL Server and Windows Authentication mode"。

当我通过远程桌面登录到服务器时,我可以使用 SQL 服务器用户名和密码通过 SSMS 登录命名实例。当我尝试使用相同的用户名和密码远程登录命名实例时,出现此屏幕截图中所述的错误(我的声誉不够高,无法将屏幕截图直接粘贴到我的 post,请按照 link):

以下是我目前检查过的内容:

  1. 我可以从本地计算机 ping 远程服务器的 IP 地址并获得成功响应。
  2. 我已将 SQL 服务器的实例配置为接受此 article 中所述的远程连接。
  3. 在远程服务器上的 SQL 服务器配置管理器中,根据我命名实例的协议,我启用了 "Shared Memory"、"Named Pipes" 和 "TCP/IP".
  4. 在 "IP2" 部分下的 "IP Addresses" 选项卡中 SQL 服务器配置管理器中远程服务器的 "TCP/IP" 属性下,我设置了 "TCP Dynamic Ports"值为空。我已尝试将 "TCP Port" 值设置为 1433,然后设置为 1434(常规实例和命名实例之间的区别),然后按照屏幕截图 here 中所示执行下面的其余步骤(这些是我link编辑到上面的文章中指定的值)
  5. Windows 远程服务器上没有 运行 防火墙,据我所知,远程服务器上也没有另一个防火墙 运行。
  6. 远程服务器上的 SQL Server Browser 服务已停止并重新启动。
  7. 在我完成所有这些更改并验证所有这些设置后,远程服务器上命名实例的 SQL 服务器服务已停止并重新启动。

完成所有这些之后,当我尝试通过 SSMS 从本地计算机连接到远程服务器上 SQL 服务器的命名实例时,我仍然收到原始错误。我一直在上下搜索,找不到任何其他故障排除步骤来诊断此问题。有人会指出我应该采取的下一步措施来解决这个问题吗?提前致谢。

我认为您的命名实例 TCP/IP 配置不正确。如果您在本地连接,它不会使用 TCP/IP 连接,而是使用共享内存。您将您的实例设置为侦听端口 1434,但此端口已被 SQL 浏览器服务使用并且很可能 SQL 服务器引擎服务无法打开该端口(您可以通过查找错误来确认在日志中)。要使其工作,您应该将 IP2 -> TCP 动态端口设置为 0 并清除 IP2 -> TCP 端口。像这样配置,您的命名实例将使用动态端口。如果要将其配置为使用特定端口,请将 IP2 -> TCP 端口中的 1434 替换为 可用 端口号。

我注销然后第二天回来执行@Andrey Nikolov 的回答中的建议,出于某种原因我现在能够远程连接到命名实例。最终对命名实例的 "TCP/IP" 配置的 "IP2" 部分起作用的设置是 "TCP Dynamic Ports" 值设置为空白,"TCP port" 设置为 1433。我没有做任何其他更改。其余配置如我在 OP 中所述。我拥有此服务器的 sysadmin 访问权限,但我不是实际管理员,所以我想实际管理员可能在我注销和重新登录之间更改了其他内容,但我不知道那可能是什么。感谢@Andrey Nikolov 的输入。

编辑: 几天后,由于我无法确定的原因,这个问题再次全面生效。经过长时间的搜索,我发现了一个非常有用的 MS Doc,它深入介绍了整个故障排除过程,希望这能帮助其他遇到这个问题的人。这是 link:

https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/troubleshoot-connecting-to-the-sql-server-database-engine?view=sql-server-2017

它说它适用于 SQL Server 2017,但我能够按照它来解决我的 SQL Server 2012 问题。对于我的情况,事实证明,因为我的服务器上有 2 个单独的 MS SQL 实例,初始实例使用的是其他地方描述的所有默认设置,而我尝试连接的实例使用的是完全不同的港口。使用此文档,我能够找出我的实例正在使用的端口,并在我尝试连接时在 SSMS 的 "Server name" 框中指定该端口。现在它就像一个魅力。