我们手头有一个非常奇怪的问题。在GetValue()方法上读取值时,.Net SqlDataReader对象会卡住。没有例外,它不会超时至少超过10分钟,这真的很长。超过10分钟后,它会抛出此错误:
一般异常 - !ET:SqlException {CRLF}!M:超时已过期。该 在完成操作或之前经过的超时时间 服务器没有响应。{CRLF}一般例外 - !ET:Win32Exception {CRLF}!M:等待操作超时{CRLF}!
通过进程转储获得的堆栈跟踪。
000000001b2ee6f8 0000000076eabe7a [InlinedCallFrame:000000001b2ee6f8] .SNIReadSyncOverAsync(SNI_ConnWrapper *,SNI_Packet **,Int32) 000000001b2ee6f8 000007fef35a3ab1 [InlinedCallFrame:000000001b2ee6f8] .SNIReadSyncOverAsync(SNI_ConnWrapper *,SNI_Packet **,Int32) 000000001b2ee6d0 000007fef35a3ab1 DomainBoundILStubClass.IL_STUB_PInvoke(SNI_ConnWrapper *,SNI_Packet **, Int32)000000001b2ee7a0 000007fef358a35f SNINativeMethodWrapper.SNIReadSyncOverAsync(System.Runtime.InteropServices.SafeHandle, IntPtr ByRef,Int32)000000001b2ee810 000007fef358a07e System.Data.SqlClient.TdsParserStateObject.ReadSniSyncOverAsync() 000000001b2ee8c0 000007fef3589f90 System.Data.SqlClient.TdsParserStateObject.TryReadNetworkPacket() 000000001b2ee900 000007fef358a760 System.Data.SqlClient.TdsParserStateObject.TryPrepareBuffer() 000000001b2ee930 000007fef358d8cb System.Data.SqlClient.TdsParser.TryGetTokenLength(字节, System.Data.SqlClient.TdsParserStateObject,Int32 ByRef) 000000001b2ee980 000007fef359de78 System.Data.SqlClient.TdsParser.TryGetDataLength(System.Data.SqlClient.SqlMetaDataPriv, System.Data.SqlClient.TdsParserStateObject,UInt64 ByRef) 000000001b2ee9c0 000007fef359dce3 System.Data.SqlClient.TdsParser.TryProcessColumnHeaderNoNBC(System.Data.SqlClient.SqlMetaDataPriv, System.Data.SqlClient.TdsParserStateObject,Boolean ByRef,UInt64 ByRef)000000001b2eea40 000007fef359da4c System.Data.SqlClient.SqlDataReader.TryReadColumnInternal(的Int32, 布尔)000000001b2eeae0 000007fef359d900 System.Data.SqlClient.SqlDataReader.TryReadColumn(Int32,Boolean, 布尔)000000001b2eeb50 000007fef359d81b System.Data.SqlClient.SqlDataReader.GetValueInternal(Int32)已 000000001b2eeb90 000007fef359d7c7 System.Data.SqlClient.SqlDataReader.GetValue(Int32)已
这肯定不是数据库锁定问题,因为我们观察到它是通过ExecuteReader()方法。我们还可以在SQL profiler中看到原始命令已成功完成。只有在迭代记录和读取值时才会卡住它。这种情况每10-15天随机发生一次。
以前有人遇到这样的问题吗?可能是什么原因?
我已经stackoverflow thread但它没有提供解决方案。这可能是网络连接问题吗?为什么不超时?