【问题标题】:Failover Partner behavior for Sql ConnectionString with ConnectionTimeout具有 ConnectionTimeout 的 Sql ConnectionString 的故障转移伙伴行为
【发布时间】:2011-10-15 10:23:55
【问题描述】:

我正在使用 .Net 4.0 和 SqlConnection/SqlCommand 连接到具有镜像设置的 2008 R2 SQL 服务器。 ConnectionString 指定一个故障转移伙伴

谁能解释 ConnectionTimeout 设置如何影响客户端故障转移到镜像的能力?即它是否总是在连接到故障转移服务器之前等待 ConnectionTimeout?或者故障转移成为主要意味着客户端将立即切换到连接到故障转移而忽略 ConnectionTimeout?

我阅读了 MSDN 文章 Database Mirroring in SQL ServerMaking the Initial Connection to a Database Mirroring Session,他们谈到了客户端在主服务器关闭时自动连接到镜像,但是指定的高 ConnectionTimeout 会影响客户端连接所需的时间到故障转移服务器?

我必须将所有连接字符串上的 ConnectionTimeout 设置为至少 150 due to a known bug in ADO.NET。而且我们担心巨大的超时会影响应用及时处理故障转移的能力

【问题讨论】:

    标签: .net sql connection-string failover mirroring


    【解决方案1】:

    请注意你的超时时间必须足够大以处理 tcp 超时 - 换句话说,如果你的 sql 连接没有等待足够长的时间,它不会等待 tcp 连接超时,重试,超时,重试再决定服务器死了。我们必须将其设置为至少 60 秒。

    我在这里写了更多关于这个的内容,https://serverfault.com/questions/249589/db-auto-failover-in-c-does-not-work-when-the-principal-server-physically-goes-o

    【讨论】:

      【解决方案2】:

      如果主数据库服务器不可用,则 ADO.Net 将立即尝试联系故障转移伙伴。如果主服务器可用,但请求的数据库处于镜像状态,则 ADO.Net 调用方将被重定向到主服务器(可能与连接字符串故障转移伙伴匹配也可能不匹配)。任何其他暗示主数据库和服务器可用性的情况都将等待超时或错误。

      【讨论】:

      • 谢谢,从我收集的信息来看,ConnectionTimeout 只影响放弃尝试和抛出异常的总时间,它使用故障转移伙伴的能力似乎没有受到影响通过超时值。但我没有看到任何地方明确说明
      猜你喜欢
      • 2015-10-28
      • 1970-01-01
      • 2011-11-08
      • 2010-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多