SQL错误传输级别

本文关键字:传输 错误 SQL | 更新日期: 2023-09-27 18:18:10

在执行SQL查询时,我得到以下随机间隔的错误

Message: System.Data.SqlClient.SqlException (0x80131904): A transport-level error has     occurred when receiving results from the server. (provider: TCP Provider, error: 0     - The specified network name is no longer available.)
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean     breakConnection)'
   at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception,     Boolean breakConnection)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()
   at System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, UInt32 error)
   at System.Data.SqlClient.TdsParserStateObject.ReadSni(DbAsyncResult asyncResult, TdsParserStateObject stateObj)
  at System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket()
at System.Data.SqlClient.TdsParserStateObject.ReadBuffer()
at System.Data.SqlClient.TdsParserStateObject.ReadByte()
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe)
at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()`

我认为这可能是由于网络连接下降,这是正确的吗?我该如何编写代码呢?

SQL错误传输级别

我认为这可能是由于网络连接下降,这是正确的吗?

是的,"传输级错误"是"网络"的"极客用语"。当网络连接失效时也可能发生这种情况,例如,因为您获得连接后服务器重新启动,并且保持连接的时间过长。

我如何围绕这个进行编码?

不幸的是,您对网络连接无能为力。您可以使用try/catch,查找SQL异常,并使用重试计数进行重试,但最终您将此报告给最终用户。