使用 MultiSubnetFailover 连接到 SQL Server 2012 AlwaysOn 组侦听器会导致超时
Posted
技术标签:
【中文标题】使用 MultiSubnetFailover 连接到 SQL Server 2012 AlwaysOn 组侦听器会导致超时【英文标题】:Connecting to a SQL Server 2012 AlwaysOn Group Listener with MultiSubnetFailover results in a Timeout 【发布时间】:2013-03-21 18:34:37 【问题描述】:我们遇到了一个奇怪的问题,即当 MultiSubnetFailover 设置为 true 时,我们的开发人员无法连接到 AlwaysOn 可用性组侦听器。但是,客户端可以在尝试直接连接到组的主节点时进行连接。我们已经在使用 .Net 4.0.3 的 Windows 8 和使用 .Net 4.0.3 的 Windows 7 上通过以下最低限度的测试重现了这一点。和 .Net 4.5。
我们还成功地让我们的登台服务器通过组侦听器连接,以及使用 sqlcmd 和 SMS 通过 MultiSubnetFailover 标志连接到 vip。所以看起来监听器本身配置正确。
这也是对侦听器名称进行 nslookup 的结果。据我在网上找到的,我们已正确完成所有操作,但连接仍然超时。非常感谢任何人提供的任何帮助。
更新:
通过消除过程,这似乎与在开发人员机器上安装 Visual Studio 有某种联系。
NSLookup:
Non-authoritative answer:
Name: sql02
Address: 10.101.2.222
Name: sql02
Address: 10.101.1.222
Name: sql02
Address: 10.101.0.222
最小测试用例:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
namespace ConsoleApplication1
class Program
static void Main(string[] args)
var connection = new SqlConnection(@"
Data Source = sql02;
Initial Catalog = test;
Integrated Security = True;
MultiSubnetFailover = True;
MultipleActiveResultSets = True;
Max Pool Size = 512;");
connection.Open();
【问题讨论】:
【参考方案1】:尝试将登录超时时间增加到 30 秒,看看连接是否成功。如果是这样,请记下连接需要多少秒。大约 20-22 秒吗?
您可以像这样使用 SQLCMD.EXE 进行测试:
sqlcmd -S 监听器 -E -M -l30
【讨论】:
【参考方案2】:我们实际上已经在上周发现了这个问题。
原来这是由运行 Avast 的开发机器造成的驱动程序问题!作为防病毒解决方案。我们找不到阻止这种情况的神奇设置,所以我们不得不卸载 Avast!并将用另一种防病毒软件替换它。
【讨论】:
以上是关于使用 MultiSubnetFailover 连接到 SQL Server 2012 AlwaysOn 组侦听器会导致超时的主要内容,如果未能解决你的问题,请参考以下文章