Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 镜像-无法访问或不存在服务器网络地址_Sql Server_Sql Server 2012 - Fatal编程技术网

Sql server 镜像-无法访问或不存在服务器网络地址

Sql server 镜像-无法访问或不存在服务器网络地址,sql-server,sql-server-2012,Sql Server,Sql Server 2012,我已经阅读了许多关于如何在SQL Server 2012上配置镜像的文章。我完成了所有的步骤,所有的事情都成功了,直到最后一步,但没有成功 当我在主体上运行此命令时: ALTER DATABASE MyDBName SET PARTNER='TCP://1.2.3.4:5022' 我得到这个错误: 无法指定服务器网络地址“TCP://1.2.3.4:5022” 已到达或不存在 当我运行上面所示的对应ALTER语句时,但在镜像上,它工作得很好 我已经尝试了这方面的所有步骤 要点: 主服务器和镜像服

我已经阅读了许多关于如何在SQL Server 2012上配置镜像的文章。我完成了所有的步骤,所有的事情都成功了,直到最后一步,但没有成功

当我在主体上运行此命令时:

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

我得到这个错误:

无法指定服务器网络地址“TCP://1.2.3.4:5022” 已到达或不存在

当我运行上面所示的对应ALTER语句时,但在镜像上,它工作得很好

我已经尝试了这方面的所有步骤

要点:

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

  • 正在寻找关于这一点的一些想法。

    这是一个分号吗

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

    使用management studio连接到IP/端口时使用分号。

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

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


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

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


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

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

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

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

    分号对于该命令的语法无效。“由于服务器连接字符串无效,ALTER DATABASE命令失败。”冒号正确,MS文档就是这样做的。事实上,这句话在镜子上是成功的,而不是在主体上。他们都是MSSQL 2012。啊,好吧,抱歉。我认为这可能值得一试,因为SSMS到IP/端口的连接就是这样工作的。解决此问题祝您好运。您是否尝试在两台计算机上禁用Windows防火墙,然后重试?我曾经有过几次这样的经历,尽管我为MSSQL配置了(IMHO correct)规则,但防火墙以某种方式阻止了传入或传出连接。做这个测试至少可以让你知道它是否是防火墙,这样你就可以排除它。@deroby:我刚刚试着在两台服务器上完全关闭防火墙。没有区别。相同的错误。@HerrimanCoder:您是否解决了此问题。我知道这是一个老帖子。但现在我遇到了一个类似的问题,无法找到解决方案。如果您已解决此问题,您的解决方案是什么。我可以从镜像连接到主体5022。我可以从每台机器远程登录到端口。我应该授予SQL Server服务什么权限?默认情况下,只有在本地计算机上具有sysadmin角色的用户才能连接到端点。在我的例子中,我在同一个域上,但这不适用于您的场景。您必须确保创建端点时将您的证书指定为授权,创建登录名并将其分配给该证书,最后授予登录名对该端点的权限。是的,我是这样设置的。正如在原始帖子中提到的,我正在使用证书进行身份验证,这是微软建议的。