登录前握手过程中出错

本文关键字:过程中 出错 登录 | 更新日期: 2023-09-27 18:30:07

经过几年的开发,我的C#/.Net程序在尝试连接到MS Sql服务器数据库时遇到了这个问题。我不知道如何解决它。只有当试图在特定的表上写入时才会出现这种情况。清理完表格后,我注意到这个问题的频率有所下降,但它仍在不时发生;

以下是我得到的两个例外:

  1. System.Data.SqlClient.SqlException(0x80131904):已成功与服务器建立连接,但随后在登录前握手过程中出错。(提供程序:SSL提供程序,错误:0-等待操作超时。)--->System.ComponentModel.Win32异常(0x80004005):等待操作在System.Data.ProviderBase.DbConnectionPool.TryGetConnection处超时(DbConnection owningObject,UInt32 waitForMultipleObjectsTimeout,Boolean allowCreate,Boolean onlyOneCheckConnection,DbConnectionOptions userOptions,DbConnectionInternal&connection)。。。在System.Data.Linq.DataQuery 1.System.Linq.IQueryProvider.Execute[S](Expression >expression) at System.Linq.Queryable.SingleOrDefault[TSource](IQueryable 1源)

2.

System.Data.SqlClient.SqlException(0x80131904):连接超时已过期。尝试使用登录前握手确认时经过的超时时间。这可能是因为登录前握手失败,或者服务器无法及时响应。尝试连接到此服务器时花费的持续时间为-[预登录]初始化=42511;握手=6001;--->System.ComponentModel.Win32异常(0x80004005):等待操作超时位于System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject,UInt32 waitForMultipleObjectsTimeout,Boolean allowCreate,Boolean onlyOneCheckConnection,DbConnectionOptions userOptions,DbConnectionInternal&connection)…

登录前握手过程中出错

由于安装了windows更新KB2992611,这是SChannel的一个关键更新,我在过去两天遇到了同样的错误。我还没有确定这会破坏登录前握手的原因,但暂时卸载此更新恢复了连接到SQL Server的能力。

如果问题是间歇性的,您应该在服务器和网卡的数据库监视器计数器上运行perfmon,特别是数据包丢失和过载。我认为你应该排除连接问题,突然切换可能是原因。如果通过配置SQL Server或防火墙解决了问题,则问题将再次出现。