症状

当您尝试通过在 Microsoft ADO.NET 2.0 中使用SqlConnection对象来连接到数据库时,则可能会报告连接失败,即使是实际可用的数据库服务器。满足以下条件时,此问题是尤为突出:

  • 至少 1 分钟,数据库服务器已不可用。

  • 客户端应用程序已尝试在该时间内连接到数据库服务器。

原因

此问题是以前运行 Microsoft SQL Server 的服务器的连接尝试失败时发生的行为。SqlClient 连接池内部可能限制对服务器的新连接尝试的数目。 此过程是很短的时间发生。在此期间,连接池会自动报告的最后一个错误发生而不是进行尝试连接到服务器。 已过期的时间段后下, 一次连接请求从客户端应用程序实现了真正连接到正在运行 SQL Server 的服务器。注意:有时,时间段可以变得非常大。 这个问题将取决于数据库服务器不可用多长时间。

解决方案

要解决此问题,请下载相应的文件,为您的计算机:

对于基于 x86 的计算机

是可以从 Microsoft 下载中心下载下面的文件:http://download.microsoft.com/download/2/C/5/2C5BCDC9-3241-443A-9F96-4E0B0EDFA727/NDP20-KB916002-X86.exe

对于基于 x64 的计算机

是可以从 Microsoft 下载中心下载下面的文件:http://download.microsoft.com/download/D/3/9/D39C79DF-4158-45DF-9031-92C52AB0ED19/NDP20-KB916002-X64.exe

对于基于 Itanium 的计算机

是可以从 Microsoft 下载中心下载下面的文件:http://download.microsoft.com/download/0/0/3/00392DD3-5B4F-4D99-94E8-6827B8F8D7EF/NDP20-KB916002-IA64.exe有关如何下载 Microsoft 支持文件的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

119591 如何从联机服务获取 Microsoft 支持文件Microsoft 已对此文件进行病毒扫描。Microsoft 使用自该文件发布日期起可用的最新的病毒检测软件。该文件存储在安全增强型服务器上,帮助防止对文件进行任何未经授权的更改。

解决方法

若要变通解决此问题,请使用SqlConnection对象的ClearPool或ClearAllPools方法来重置连接池。

状态

Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。

更多信息

应用此修补程序后之前在数据库服务器从停机中恢复时,客户端应用程序能够成功连接到数据库服务器,,也仍然可能出现短暂的延迟。 通常情况下,这种延迟不会持续超过 60 秒,不管多长时间 SQL Server 以前已不可用。的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

824684 用于描述 Microsoft 软件更新的标准术语的说明关于SqlConnection类的详细信息,请访问下面的 Microsoft 开发人员网络 (MSDN) Web 站点:

http://msdn2.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection(VS.80).aspx此修复程序包括在以下 Microsoft 知识库文章中的修补程序与相同的修补程序软件包:

912151解决: 连接可能超时后,第一次尝试连接到故障转移合作伙伴服务器,当您尝试通过使用基于 ADO.NET 2.0 的应用程序连接到 SQL Server 2005 镜像数据库

912731解决: 在 ADO.NET 连接应用程序使用 System.Data.SqlClient 命名空间,该应用程序可能会遇到 CPU 使用率较高并且可能会停止响应

912732解决: 当您连接到 SQL Server 2005 数据库打开的 ADO.NET 2.0 中启动新事务时,可能会出错

913177解决: 在 ADO.NET 连接应用程序使用 SqlBulkCopy 类时,您可能会收到一条错误消息

913764解决: 尝试运行 UNION ALL 查询或调用 DeriveParameters 方法时出现错误消息:"内部连接致命错误"

913765解决: ADO.NET 2.0 应用程序中的 SqlCommand 类的实例上调用 (Execute) 方法之一时,可能会出现的 sqlexception: 异常

913766解决: 当客户端计算机上的.NET Framework 2.0 数据集对象进行反序列化错误地由 DateTime.MinValue 字段表示日期时间列不包含任何数据

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。