【问题标题】:Can't get database mirror witness to connect无法让数据库镜像见证连接
【发布时间】:2010-09-21 22:28:32
【问题描述】:

我已经成功配置了 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 上看到临时建立的连接,然后出现这些错误。

有人知道为什么会这样吗?

【问题讨论】:

    标签: sql sql-server database mirroring


    【解决方案1】:

    我遇到了完全相同的问题。 2 服务器 2008 64 位盒,带有 2005 见证。与原始海报有相同的错误消息。也检查了所有相同的设置,这就是所有谷歌搜索都会指向的内容。

    最后,通过转移到运行 SQL 2008 的见证人处解决了这个问题。两天的挫败感。

    仅供参考 - 这是微软关于见证服务器的声明。我想你可以读到你想要的东西:

    软件和硬件建议

    我们强烈建议见证人驻留在与合作伙伴不同的计算机上。只有 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 的硬件和软件要求。”

    【讨论】:

      【解决方案2】:

      您的合作伙伴名称是否与镜像的 FQDN 完全匹配?您描述的行为可能发生在镜像(或相关负责人)以与ALTER DATABASE ... SET PARTNER = 'tcp://partnername:...'; 中使用的合作伙伴不同的名称认识自己(GetComputerNameEx 的返回)时。考虑这种情况:

      • 主体使用名称Foo 作为镜像。 Foo通过hosts文件解析到镜像的正确IP
      • 镜子知道自己是Bar
      • 当添加见证人时,委托人会说“Foo 的状态如何,你看到他了吗?”。镜子会向目击者报告“你好,我是Bar”。因此,见证人将向校长报告“我不知道Foo 在哪里”,这最终可能会中断镜像会话。

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

      【讨论】:

      • 是的,合作伙伴名称与 FQDN 匹配。我用 ipconfig、DNS 和 nslookup 检查了名称。通过 SQL Profiler 和 Windows 事件查看器,我可以看到主体连接到见证服务器,但见证服务器似乎没有响应,并且我收到上面列出的错误消息。主体和镜像连接没有问题。我还有什么遗漏的吗?
      • 见证人和委托人之间的安全性是否正确?见证人需要对主体的镜像端点具有 CONNECT 权限。
      • 主体、镜像和见证上的数据库引擎的 windows 帐户已被授予对端点的 CONNECT 权限。
      • 如果我将镜像指向使用 SQL 2008 的服务器,它可以工作。您可以使用 SQL Server 2005 作为 SQL 2008 镜像的见证吗?这是一个错误的假设吗?
      • 不支持不同版本(2005、2008、2008R2)的任何角色(主体/镜像/见证)的 Afaik 组合,无论组合如何。您必须使用 CSS 清除此问题,否则可能会运行不受支持的配置(如果出现问题,您只能靠自己)。
      【解决方案3】:

      根据 Microsoft SQL Server 2008 圣经原则,镜像服务器和见证服务器都必须具有相同的 SQL Server 版本(2005 与 2008)。原则和镜像也必须具有该版本的相同版本(企业版与标准版)。因此,witness 可以是任何版本(express、std、ent、workgroup...),但也必须是相同的版本。

      【讨论】:

      • 嗯...除了 Express 允许作为见证人,但不能用于镜像或​​主体。
      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-19
        • 2017-06-01
        • 2020-08-14
        • 2014-08-24
        • 1970-01-01
        • 2019-02-04
        相关资源
        最近更新 更多