无法获取数据库镜像见证连接

时间:2010-09-21 22:28:33

标签: sql sql-server database mirroring

我已成功使用SQL Server 2008和Windows Server 2008 R2 64bit配置了主体和镜像。但是,当我尝试在混合中添加见证(SQL Server 2005 and Windows Server 2003 32bit)时,我在主要事件日志中收到以下错误:

 EventID 1456 "The ALTER DATABASE command could not be sent to the remote 
     server instance 'TCP://SERVERNAME.DOMAIN:5022'. The database mirroring 
     configuration was not changed. Verify that the server is connected,
     and try again." and EventID 1474 "Database mirroring connection error 
      4 'An error occurred while receiving data: '64(The specified network name is 
      no longer available.)'.' for 'TCP://SERVERNAME.DOMAIN:5022'."

我可以通过netstat和SQL Profiler在端口5022上看到临时建立的连接,然后是这些错误。

有谁知道为什么会这样?

4 个答案:

答案 0 :(得分:2)

我有完全相同的问题。 2 Server 2008 64位盒,带有2005年见证。与原始海报有相同的错误消息。检查所有相同的设置,这是所有谷歌搜索将指向你。

最后,通过转移到运行SQL 2008的证人来解决这个问题。对那个问题感到沮丧两天。

仅供参考 - 这是微软对Witness服务器的陈述。我想你可以阅读你想要的内容:

  

软件和硬件建议

     

我们强烈建议证人与合作伙伴分开驻留在另一台计算机上。数据库镜像合作伙伴仅受SQL Server 2005 Standard及更高版本以及SQL Server 2005 Enterprise Edition及更高版本的支持。相比之下,证人也受SQL Server 2005 Workgroup及更高版本以及SQL Server 2005 Express Edition及更高版本的支持。见证人可以在任何可靠的计算机系统上运行,该系统支持任何这些版本的SQL Server。但是,我们建议用作见证服务器的每个服务器实例都对应于您运行的SQL Server Standard版本所需的最低配置。有关这些要求的详细信息,请参阅安装SQL Server 2008 R2的硬件和软件要求。“

答案 1 :(得分:1)

您的合作伙伴名称是否与镜像的FQDN完全匹配?当镜像(或事情的主体)通过与ALTER DATABASE ... SET PARTNER = 'tcp://partnername:...';中使用的名称不同的名称知道自己(GetComputerNameEx的返回)时,您描述的行为可能会发生。请考虑以下情况:

  • 主体使用名称Foo作为镜像。 Foo通过hosts文件解析为正确的镜像IP
  • 镜子将自己称为Bar
  • 当添加证人时,委托人将为“Foo的状态是什么,你看到他吗?”。镜子会报告'你好,我是Bar'。因此,证人将向校长报告“我不知道Foo在哪里”,这最终会打破镜像会议。

有更多细节和细微差别。故事的要点是:在设置镜像时,始终使用通过DNS正确解析的FQDN名称。

答案 2 :(得分:1)

根据Microsoft SQL Server 2008 Bible,原则,镜像和见证服务器都必须具有相同的SQL Server版本(2005年与2008年)。原则和镜像也必须具有该版本的相同版本(Enterprise vs. Standard)。因此,证人可以是任何版本(express,std,ent,workgroup ......),但也必须是同一版本。

答案 3 :(得分:0)

我遇到了同样的问题。我在适配器上禁用了IP V6,并且能够连接到见证服务器。