【问题标题】:Mirroring - server network address cannot be reached or does not exist镜像 - 服务器网络地址无法访问或不存在
【发布时间】:2014-02-06 00:55:39
【问题描述】:

我阅读了很多关于如何在 SQL Server 2012 上配置镜像的文章。我完成了这些步骤,一切正常,直到最后一步,但没有成功。

当我在 Principal 上运行它时:

ALTER DATABASE MyDBName SET PARTNER = 'TCP://1.2.3.4:5022';

我收到此错误:

服务器网络地址“TCP://1.2.3.4:5022”不能 达到或不存在。

当我运行上面显示的对应 ALTER 语句时,但在 Mirror 上,它工作正常。

我已经尝试了troubleshooting article 中的所有步骤。

要点:

  1. 主服务器和镜像服务器位于不同的数据中心,根本不在同一个网络上。未通过 VPN 连接。彼此完全不信任。
  2. 我可以通过主节点上的 SSMS 连接到镜像并运行查询。反之亦然。
  3. 我在每台服务器上都配置了证书来建立信任关系。在设置和配置过程中一切正常,没有错误。
  4. 我在两台服务器上都配置了端点并验证了它们是否处于活动状态/启用状态。
  5. 我通过配置传入和传出 Windows 防火墙规则在两台服务器上打开了端口 5022。我可以从 Principal 远程登录到镜像,反之亦然 - 端口似乎打开了,没有问题。
  6. 在上述故障排除指南中,我尝试了步骤 1-6。我没有尝试 7,删除端点并重新创建,因为它们在我看来完全有效和活跃。

寻找关于这个的一些想法。

【问题讨论】:

  • 您是否尝试在两台机器上禁用 Windows 防火墙,然后再尝试?我有过几次这样的情况,尽管我为 MSSQL 配置了(恕我直言)规则,但防火墙以某种方式阻止了传入或传出连接。做这个测试至少可以让你知道它是否是防火墙,这样你就可以排除它。
  • @deroby:我刚刚尝试在两台服务器上完全关闭防火墙。没有不同。同样的错误。
  • @HerrimanCoder:你解决了这个问题吗?我知道这是一个旧帖子。但是现在我遇到了类似的问题,找不到解决方案。如果您解决了这个问题,您的解决方案是什么。

标签: sql-server sql-server-2012


【解决方案1】:

如果您可以从主机远程登录该端口,那么 TCP/IP 和防火墙设置一切正常。

我记得我过去也遇到过类似的问题。不幸的是,我不记得确切的解决方案,但它与端点的安全/身份验证以及 SQL Server 服务帐户在镜像机器上没有足够的权限有关。不幸的是,在这种情况下,错误消息非常具有误导性。编写端点脚本并验证它们的设置,SSMS 没有用于此的 UI。 您可以检查的另一件事是,您还可以从镜像连接到端口 5022 到主机。如果两个实例都无法连接,您将收到相同的错误消息。

很抱歉,我无法为您提供合适的解决方案,但也许这会为您指明正确的方向。

【讨论】:

  • 我可以从镜像连接到主体 5022。我可以从每台机器远程登录到端口。我应该授予 SQL Server 服务哪些权限?
  • 默认情况下,只有在本地计算机上具有 sysadmin 角色的用户才能连接到端点。就我而言,我在同一个域上,但这不适用于您的场景。您必须确保创建端点并指定您的证书作为授权,创建登录名并将其分配给该证书,最后授予登录名对该端点的权限。 see this link
【解决方案2】:

不幸的是,MS SQL 中有相当多的非信息性错误消息。问题可能是授权问题,服务器仍然会说“无法访问网络地址”。

考虑到“服务器在不同的数据中心”,如何进行身份验证? MSSQL 服务(在 server1 上)本身必须作为有效的 db 用户(在 server2 上,反之亦然)运行才能使镜像工作。

【讨论】:

  • 是的,我是这样设置的。
  • 如原帖中所述,我使用证书进行身份验证,这是 MS 建议做的。
【解决方案3】:

发生这种情况可能有多种原因。

在您的 SQL Server Management Studio 中,如果您在服务器实例名称旁边看到一个白色气泡,而不是绿色气泡,那么您可以尝试以下操作:

  • “允许应用程序通过防火墙”并为 Windows Server 2012 添加“Windows Management Instrumentation (WMI)”。如果是 Windows Server 2008,您可以允许“远程管理”通过防火墙。

【讨论】:

    【解决方案4】:

    是分号吗?

    ALTER DATABASE MyDBName SET PARTNER = 'TCP://1.2.3.4;5022'
    

    使用 management studio 时连接 IP/Port 时使用分号。

    【讨论】:

    • 分号对该命令的语法无效。 “由于服务器连接字符串无效,ALTER DATABASE 命令失败。”冒号是正确的,这就是 MS 文档的做法。事实上,该语句在 Mirror 上成功运行,只是在主体上无效。它们都是 MSSQL 2012。
    • 好吧,抱歉。认为这可能值得一试,因为这就是 SSMS 连接到 IP/端口的工作方式。祝你好运解决问题。
    猜你喜欢
    • 2017-04-16
    • 2019-08-04
    • 1970-01-01
    • 1970-01-01
    • 2012-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-01
    相关资源
    最近更新 更多