0

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

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

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

由于 ADO.NET 中的一个已知错误,我必须将所有连接字符串上的 ConnectionTimeout 设置为至少 150 。我们担心巨大的超时会影响应用程序及时处理故障转移的能力

4

2 回答 2

2

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

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

于 2012-04-12T15:53:40.037 回答
1

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

于 2011-07-28T22:09:20.353 回答