症状
当您尝试从客户端应用程序通过 AlwaysOn 可用性组侦听程序连接到 Microsoft SQL Server 2012年时,您可能会遇到登录超时错误消息。
例如,当您使用SqlCmd命令,可能会收到以下错误消息︰
Sqlcmd︰ 错误︰ Microsoft SQL 本机客户端︰ 登录超时已过期。
[Microsoft][SQL Server 本机客户端 11.0]无法完成登录过程中打开服务器连接延迟
当通过使用.Net 中使用基于.NET Framework 3.5 的 Microsoft 或 Microsoft 的基于.NET Framework 4.0 应用程序框架数据提供 SQL Server,您可能会收到以下错误消息︰
超时已过期。在操作完成之前已超时或服务器没有响应。
在 System.Data.SqlClient.SqlInternalConnection.OnError (sqlexception︰ 异常、 布尔型 breakConnection)
在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()
在 System.Data.SqlClient.TdsParserStateObject.ReadSniError (TdsParserStateObject stateObj,UInt32 错误)
在 System.Data.SqlClient.TdsParserStateObject.ReadSni (DbAsyncResult asyncResult,TdsParserStateObject stateObj)
在 System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket()
在 System.Data.SqlClient.TdsParser.ConsumePreLoginHandshake (加密的布尔值布尔 trustServerCert,布尔值和 marsCapable)
在 System.Data.SqlClient.TdsParser.Connect (ServerInfo serverInfo,SqlInternalConnectionTds connHandler,布尔型 ignoreSniOpenTimeout、 Int64 timerExpire 加密 boolean 类型的值,布尔型 trustServerCert、 布尔型 integratedSecurity、 布尔型 withFailover)
在 System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin (ServerInfo serverInfo、 新密码字符串、 布尔型 ignoreSniOpenTimeout、 TimeoutTimer 超时、 SqlConnection owningObject、 布尔型 withFailover)
在 System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover (ServerInfo serverInfo,新密码字符串、 布尔型 redirectedUserInstance、 SqlConnection owningObject、 可以 connectionOptions,TimeoutTimer 超时)
在 System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist (SqlConnection owningObject、 TimeoutTimer 超时,可以 connectionOptions、 新密码字符串、 布尔型 redirectedUserInstance)
在 System.Data.SqlClient.SqlInternalConnectionTds.ctor (DbConnectionPoolIdentity 标识、 可以 connectionOptions、 providerInfo 对象、 字符串密码、 SqlConnection owningObject、 布尔 redirectedUserInstance)
注意:如果增加登录超时时间为 30 秒,客户端应用程序所需大约 20 秒才能成功连接。
满足以下条件时,会出现这些症状︰
-
中多子网定义可用性组。
-
当您进行连接时,您可以指定MultiSubnetFailover参数。
-
必须在客户端应用程序的工作站安装活动的传输驱动程序接口 (TDI) 筛选器驱动程序。
原因
因为 Tdx.sys 驱动程序的Closesocket()函数正确,如果不处理 TCP/IP 握手过程中调用该函数时,将出现此问题。
解决方案
修补程序信息
可以从 Microsoft 获得受支持的修复程序。然而,此修补程序仅用于解决本文中描述的问题。此修复程序仅适用于遇到本文中描述的问题的系统。此修补程序可能会接受进一步的测试。因此,如果这个问题没有对您造成严重的影响,我们建议您等待包含此修复程序的下一个软件更新。
如果此修复程序可供下载,则在此知识库文章的顶部会出现“修补程序下载可用”部分。如果未显示此部分,请与 Microsoft 客户服务和支持部门联系以获取此修复程序。
注意:如果出现其他问题或需要任何故障诊断时,您可能需要创建单独的服务请求。对于不符合此特定的修补程序的其他支持问题和事项将照常收取费用。有关 Microsoft 客户服务和支持电话号码的完整列表,或要创建单独的服务请求,请访问下面的 Microsoft 网站:
http://support.microsoft.com/contactus/?ws=support注意:"提供修补程序下载"窗体显示获取此修复程序的语言。如果看不到您的语言,则修补程序没有那种语言的版本。
系统必备组件
若要应用此修补程序,您必须运行 Windows 7 SP1 或 Windows Server 2008 R2 SP1。
有关如何获取 Windows 7 或 Windows Server 2008 R2 Service Pack 的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
976932Windows 7 和 Windows Server 2008 R2 服务包1 的信息
注册表信息
若要应用此修补程序,您不必对注册表进行任何更改。
重启要求
应用此修补程序后,必须重新启动计算机。
修补程序替换信息
此修补程序不替代以前发布的修补程序。
此修复程序的全球版本将安装具有下表所列属性的文件。这些文件的日期和时间以协调世界时 (UTC) 列出。您的本地计算机上这些文件的日期和时间以您的本地时间加上当前夏令时 (DST) 偏差显示。此外,当您对文件执行某些操作时,日期和时间可能会更改。
Windows 7 和 Windows Server 2008 R2 文件信息备注
重要:相同的软件包中包含 Windows 7 的修复程序和 Windows Server 2008 R2 的修复程序。但是,热修复程序请求页上的修补程序在这两个操作系统中列出。要请求到一个或两个操作系统的系统应用此修补程序包,请选择在"Windows 7/Windows Server 2008 R2"页上列出的修复程序。始终参考"适用于"一节文章,以确定每个修补程序适用于实际的操作系统。
-
通过检查下表中显示的文件版本号,可以识别应用于特定产品、 SR_Level (RTM、 SPn) 和服务分支 (LDR、 GDR) 的文件:
版本
产品
里程碑
服务分支
6.1.760
1.22xxxWindows 7 和 Windows Server 2008 R2
SP1
LDR
-
为每个环境安装的MANIFEST文件 (.manifest) 和MUM文件(.mum)都是在"Windows 7 和 Windows Server 2008 R2 的附加文件信息"部分中被单独列出。MUM 和 MANIFEST 文件以及关联的安全目录 (.cat) 文件,对于维护更新组件的状态极为重要。对其属性没有列出的安全目录文件已签署 Microsoft 数字签名。
对于所有受支持的基于 x86 的 Windows 7 版本
文件名称 |
Tdx.sys |
文件版本 |
6.1.7601.22382 |
文件大小 |
74,752 |
日期(UTC) |
12-Jul-2013 |
时间 (UTC) |
09:17 |
平台 |
x86 |
对于所有受支持的基于 x64 版本的 Windows 7 以及 Windows Server 2008 R2
文件名称 |
Tdx.sys |
文件版本 |
6.1.7601.22382 |
文件大小 |
118,272 |
日期(UTC) |
12-Jul-2013 |
时间 (UTC) |
09:35 |
平台 |
x64 |
对于所有受支持的基于 IA-64 的 Windows Server 2008 R2 版本
文件名称 |
Tdx.sys |
文件版本 |
6.1.7601.22382 |
文件大小 |
236,544 |
日期(UTC) |
12-Jul-2013 |
时间 (UTC) |
09:03 |
平台 |
IA-64 |
解决方法
要解决此问题,请使用下列方法之一︰
-
提高应用程序的登录超时设定为 30 秒。
-
在 Windows Vista,Windows Server 2008 中或更高版本的 Windows 中,TDI 功能已被否决。您可以改为使用基于 Windows 筛选平台 WFP 的驱动程序。与请求有关的信息,实现新的 Windows 筛选平台的升级到该产品的安装 TDI 筛选驱动程序供应商联系。如果可能,则升级产品。
-
通过使用实现了 Windows 筛选平台同类产品替换 TDI。
-
RegisterAllProvidersIP属性设置为0 ,Windows 群集中的可用性组侦听器资源。当RegisterAllProvidersIP属性设置为0时,则不需要指定MultiSubnetFailover参数。有关此替代方法的详细信息,请访问以下 MSDN 网站︰
创建或配置可用性组侦听程序 (SQL Server)
状态
Microsoft 已经确认这是“适用于”一节中列出的 Microsoft 产品中的问题。
详细信息
有关软件更新术语的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
824684用来描述 Microsoft 软件更新的标准术语的说明
本文讨论的第三方产品是由与 Microsoft 无关的公司生产的。Microsoft 不做这些产品的任何担保、默示或其他有关的性能或可靠性。
Windows 7 和 Windows Server 2008 R2 的附加文件信息
所有受支持的基于 x86 的 Windows 7 版本的其他文件
文件名称 |
X86_2c94e745aaec3431931d51020305e2b9_31bf3856ad364e35_6.1.7601.22382_none_6fcc2f6025233efa.manifest |
文件版本 |
不适用 |
文件大小 |
702 |
日期(UTC) |
12-Jul-2013 |
时间 (UTC) |
17:26 |
平台 |
不适用 |
文件名称 |
X86_microsoft-windows-tdi-over-tcpip_31bf3856ad364e35_6.1.7601.22382_none_ec81028053b014a1.manifest |
文件版本 |
不适用 |
文件大小 |
2,924 |
日期(UTC) |
12-Jul-2013 |
时间 (UTC) |
11:37 |
平台 |
不适用 |
对于所有支持基于 x64 版本的 Windows 7 和 Windows Server 2008 R2 中的其他文件
文件名称 |
Amd64_fe6f131c914351fbcf6c3bc973329866_31bf3856ad364e35_6.1.7601.22382_none_a8b3dc126d52c78a.manifest |
文件版本 |
不适用 |
文件大小 |
706 |
日期(UTC) |
12-Jul-2013 |
时间 (UTC) |
17:26 |
平台 |
不适用 |
文件名称 |
Amd64_microsoft-windows-tdi-over-tcpip_31bf3856ad364e35_6.1.7601.22382_none_489f9e040c0d85d7.manifest |
文件版本 |
不适用 |
文件大小 |
2,926 |
日期(UTC) |
12-Jul-2013 |
时间 (UTC) |
12:33 |
平台 |
不适用 |
对于所有受支持基于 IA-64 的版本的 Windows Server 2008 R2 的附加文件
文件名称 |
Ia64_649247023b89e8d48b1a96bffe9b85cd_31bf3856ad364e35_6.1.7601.22382_none_a9a13e5e5a562b37.manifest |
文件版本 |
不适用 |
文件大小 |
704 |
日期(UTC) |
12-Jul-2013 |
时间 (UTC) |
17:26 |
平台 |
不适用 |
文件名称 |
Ia64_microsoft-windows-tdi-over-tcpip_31bf3856ad364e35_6.1.7601.22382_none_ec82a67653ae1d9d.manifest |
文件版本 |
不适用 |
文件大小 |
2,925 |
日期(UTC) |
12-Jul-2013 |
时间 (UTC) |
11:35 |
平台 |
不适用 |