连接到带有MultiSubnetFailover的SQL Server 2012 AlwaysOn组监听器导致超时

问题描述:

当MultiSubnetFailover设置为true时,我们的开发人员无法连接到AlwaysOn可用性组监听器,这是一个奇怪的问题。但是,尝试直接连接到组的主节点时,客户端可以连接。我们使用.Net 4.0.3以及windows 7使用.Net 4.0.3,在windows 8上重现了这一点。和.Net 4.5。连接到带有MultiSubnetFailover的SQL Server 2012 AlwaysOn组监听器导致超时

我们还成功将我们的登台服务器连接到组监听器上,并使用sqlcmd和SMS使用MultiSubnetFailover标志连接到贵宾室。所以看起来听者本身是正确配置的。

下面是对Listener名称的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(); 

       } 
   } 
} 

实际上,我们已经确定了问题的最后一周。

事实证明,这是由运行Avast!的开发机器创建的驱动程序问题!作为防病毒解决方案。我们无法找到防止这种情况的魔术设置,所以我们不得不卸载Avast!并将用另一种杀毒软件替代它。

尝试增加您的登录超时为30秒,看看是否连接成功。如果是这样,请记下连接所需的秒数。大约20-22秒吗?

您可以使用SQLCMD.EXE来测试这个是这样的:

SQLCMD -S听众-E -M -L30