2

我有三个不属于任何域且不使用 AD 的 Windows 服务器(data1、data2 和 datawitness)。我正在尝试根据http://alan328.com/SQL2005_Database_Mirroring_Tutorial.aspx上的说明设置镜像。在我告诉 data1 使用 datawitness 作为见证服务器的最后一组指令之前,我已经取得了成功。该步骤失败并显示以下消息:

更改数据库 MyDatabase 设置见证 = 'TCP://datawitness.somedomain.com:7024'

ALTER DATABASE 命令无法发送到远程服务器实例“TCP://datawitness.somedomain.com:7024”。数据库镜像配置未更改。验证服务器是否已连接,然后重试。

我已经使用 telnet 测试了端口 7024 和 1433,并且两台服务器确实可以相互连接。我还可以从主服务器上的 SQL Server 管理器添加到见证服务器的连接。我已经在两台服务器上使用配置管理器来启用命名管道并验证 IP 流量是否已启用并默认使用端口 1433。

还能是什么?我是否需要打开任何其他端口才能使其正常工作?(防火墙规则非常严格,但我知道前面提到的端口上的流量是明确允许的)

这里值得一提的注意事项:

  • 每台服务器在不同的网段

  • 服务器不使用 AD 并且不是域的一部分

  • 没有为这些服务器配置 DNS 服务器,因此我使用 HOSTS 文件将域名映射到 IP 地址(使用 telnet、ping 等验证)。

  • 防火墙规则非常严格,我无法直接调整它们,但如果需要我可以调用更改

  • Data1 和 Data2 使用 SQL Server 2008,Datawitness 使用 SQL Express 2005。它们都使用默认实例(即它们都不是命名实例)

4

2 回答 2

8

在梳理了博客和知识库文章和论坛帖子以及重新安装和重新配置以及重新启动和分析等等之后,我终于找到了谜题的关键 - 见证服务器上的事件日志中的条目报告了这个错误:

Database mirroring connection error 2 'DNS lookup failed with error: '11001(No such host is known.)'.' for 'TCP://ABC-WEB01:7024'.

我使用了一个 hosts 文件以 datax.mydomain.com 的形式为所有三台服务器映射了模拟域名。但是,现在很明显,见证人试图使用主服务器的名称进行通信,而我没有主机条目。只需为指向主 Web 服务器的 ABC-WEB01 添加另一个条目就可以了。没有错误,镜像终于完成了。

希望这可以为其他人节省十亿小时。

于 2009-03-27T20:16:18.453 回答
0

我想为这个特定问题再添加一个子答案,正如我对克里斯回答的评论所示,我的镜子显示为断开连接(对证人)显然你需要重新启动(或者在我的情况下,我只是重新启动了服务)见证服务器。

一旦我这样做了,镜子就会将见证人连接显示为已连接!

请参阅: http: //www.bigresource.com/Tracker/Track-ms_sql-cBsxsUSH/

于 2011-08-25T12:57:51.893 回答