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):
以下是我目前检查过的内容:
- 我可以从本地计算机 ping 远程服务器的 IP 地址并获得成功响应。
- 我已将 SQL 服务器的实例配置为接受此 article 中所述的远程连接。
- 在远程服务器上的 SQL 服务器配置管理器中,根据我命名实例的协议,我启用了 "Shared Memory"、"Named Pipes" 和 "TCP/IP".
- 在 "IP2" 部分下的 "IP Addresses" 选项卡中 SQL 服务器配置管理器中远程服务器的 "TCP/IP" 属性下,我设置了 "TCP Dynamic Ports"值为空。我已尝试将 "TCP Port" 值设置为 1433,然后设置为 1434(常规实例和命名实例之间的区别),然后按照屏幕截图 here 中所示执行下面的其余步骤(这些是我link编辑到上面的文章中指定的值)
- Windows 远程服务器上没有 运行 防火墙,据我所知,远程服务器上也没有另一个防火墙 运行。
- 远程服务器上的 SQL Server Browser 服务已停止并重新启动。
- 在我完成所有这些更改并验证所有这些设置后,远程服务器上命名实例的 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:
它说它适用于 SQL Server 2017,但我能够按照它来解决我的 SQL Server 2012 问题。对于我的情况,事实证明,因为我的服务器上有 2 个单独的 MS SQL 实例,初始实例使用的是其他地方描述的所有默认设置,而我尝试连接的实例使用的是完全不同的港口。使用此文档,我能够找出我的实例正在使用的端口,并在我尝试连接时在 SSMS 的 "Server name" 框中指定该端口。现在它就像一个魅力。
我 运行 SQL Microsoft Windows Server 2012 R2 上的 Server 2012。我是 运行 一个名为 PP
的命名实例。服务器身份验证设置为 "SQL Server and Windows Authentication mode"。
当我通过远程桌面登录到服务器时,我可以使用 SQL 服务器用户名和密码通过 SSMS 登录命名实例。当我尝试使用相同的用户名和密码远程登录命名实例时,出现此屏幕截图中所述的错误(我的声誉不够高,无法将屏幕截图直接粘贴到我的 post,请按照 link):
以下是我目前检查过的内容:
- 我可以从本地计算机 ping 远程服务器的 IP 地址并获得成功响应。
- 我已将 SQL 服务器的实例配置为接受此 article 中所述的远程连接。
- 在远程服务器上的 SQL 服务器配置管理器中,根据我命名实例的协议,我启用了 "Shared Memory"、"Named Pipes" 和 "TCP/IP".
- 在 "IP2" 部分下的 "IP Addresses" 选项卡中 SQL 服务器配置管理器中远程服务器的 "TCP/IP" 属性下,我设置了 "TCP Dynamic Ports"值为空。我已尝试将 "TCP Port" 值设置为 1433,然后设置为 1434(常规实例和命名实例之间的区别),然后按照屏幕截图 here 中所示执行下面的其余步骤(这些是我link编辑到上面的文章中指定的值)
- Windows 远程服务器上没有 运行 防火墙,据我所知,远程服务器上也没有另一个防火墙 运行。
- 远程服务器上的 SQL Server Browser 服务已停止并重新启动。
- 在我完成所有这些更改并验证所有这些设置后,远程服务器上命名实例的 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:
它说它适用于 SQL Server 2017,但我能够按照它来解决我的 SQL Server 2012 问题。对于我的情况,事实证明,因为我的服务器上有 2 个单独的 MS SQL 实例,初始实例使用的是其他地方描述的所有默认设置,而我尝试连接的实例使用的是完全不同的港口。使用此文档,我能够找出我的实例正在使用的端口,并在我尝试连接时在 SSMS 的 "Server name" 框中指定该端口。现在它就像一个魅力。