我有三个Windows服务器(data1,data2和datawitness),它们不属于任何域,不使用AD。我正在尝试根据http://alan328.com/SQL2005_Database_Mirroring_Tutorial.aspx上的说明设置镜像。我已经成功,直到最后一组指令,我告诉data1使用datawitness作为见证服务器。该步骤失败,并显示以下消息:
alter database MyDatabase set witness ='TCP://datawitness.somedomain.com:7024'
无法将ALTER DATABASE命令发送到远程服务器实例“TCP://datawitness.somedomain.com:7024”。数据库镜像配置未更改。验证服务器已连接,然后重试。
我使用telnet测试了端口7024和1433,两个服务器确实可以相互连接。我还能够从主服务器上的SQL Server Manager添加到见证服务器的连接。我已经在两台服务器上使用配置管理器来启用命名管道并验证IP流量是否已启用并默认使用端口1433。
它还能做什么?我是否需要打开任何其他端口才能工作? (防火墙规则非常严格,但我知道前面提到的端口上的流量是明确允许的)
值得一提的注意事项:
每个服务器位于不同的网段
服务器不使用AD且不属于域
没有为这些服务器配置DNS服务器,所以我使用HOSTS文件将域名映射到IP地址(使用telnet,ping等验证)。
防火墙规则非常严格,我无法直接调整它们,但我可以根据需要调用更改
Data1和Data2正在使用SQL Server 2008,Datawitness正在使用SQL Express 2005.所有这些都使用默认实例(即它们都不是命名实例)
答案 0 :(得分: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的另一个条目就可以了。没有错误,镜像最终完成。
希望这能节省十亿个小时。
答案 1 :(得分:0)
我想为这个具体问题添加一个子答案,因为我对Chris的回答显示,我的镜子显示为断开连接(见证人),显然你需要重启(或者在我的情况下我刚刚恢复了服务)见证服务器。
一旦我这样做,镜子就将Witness连接显示为已连接!
请参阅:http://www.bigresource.com/Tracker/Track-ms_sql-cBsxsUSH/