症状
在 Microsoft SQL Server 2012 中为Always On可用性组配置可用性组侦听器后,可能无法从应用程序对侦听器执行 ping 操作或连接到该侦听器。 例如,尝试使用 SQLCMD连接到 SQL Server 的侦听器时,连接超时。此外,还会收到类似于以下内容的错误消息: Sqlcmd:错误:Microsoft SQL Native Client:登录超时已过期。 原因
出现此问题的原因是,应用程序使用不支持新 MultiSubnetFailover 参数的旧数据提供程序,或者未配置为使用此参数。 此参数在 .NET Framework 4 和更高版本的 .NET Framework 附带的 SQLClient 驱动程序的较新版本中受支持,并重新移植到 .NET Framework 3.5。 解决方案
可以使用适用于你的案例的以下解决方法之一: 若要在数据提供程序支持 MultiSubNetFailover 参数时解决此问题,请将 MultiSubNetFailover 参数添加到连接字符串,并将其设置为 true。 若要解决旧客户端无法使用 MultiSubnetFailover 属性时出现这种情况,可以将侦听器 RegisterAllProvidersIP 的值更改为 0。 为此,请从Windows PowerShell命令行接口运行以下命令:
Import-Module FailoverClusters
Get-ClusterResource <*Your listener name*>|Set-ClusterParameter RegisterAllProvidersIP 0
|