登录前握手期间发生错误

时间:2014-11-11 09:40:45

标签: c# .net sql-server linq

经过几年的开发,我的C#/ .Net程序在尝试连接到MS Sql server数据库时遇到了这个问题。我不知道如何解决它。只有在尝试写入特定表时才会发生。在清除该表之后,我注意到此问题的频率降低,但它仍然不时发生;

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

  1.   

    System.Data.SqlClient.SqlException(0x80131904):已成功与服务器建立连接,但在登录前握手期间发生错误。 (提供者:SSL提供者,错误:0 - 等待操作超时。)---> System.ComponentModel.Win32Exception(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 source)

  2. 2

      

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

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:0)

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

相关问题