【问题标题】:SqlException breakConnectionSqlException 中断连接
【发布时间】:2022-01-20 17:00:53
【问题描述】:

我在尝试将数据插入数据库时​​收到此 SqlException。任何有关此错误的帮助都会很棒。

c#代码

UnitOfWork.GetRepository<StyleGuideNote>().Insert(newVersion);
   
if (status != null)
{
    ArchivePreviousPublishedVersion(newVersion);
}
UnitOfWork.Save();
Unhandled Exception (System.Data.SqlClient.SqlException (0x80131904): Execution Timeout Expired.  The timeout period elapsed prior to completion of the operation or the server is not responding.
The statement has been terminated. ---> System.ComponentModel.Win32Exception (0x80004005): The wait operation timed out

       at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
       at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
       at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
       at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
       at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted)
       at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)
       at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
       at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
       at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
       at System.Data.Linq.SqlClient.SqlProvider.Execute(Expression query, QueryInfo queryInfo, IObjectReaderFactory factory, Object[] parentArgs, Object[] userArgs, ICompiledSubQuery[] subQueries, Object lastResult)
       at System.Data.Linq.SqlClient.SqlProvider.ExecuteAll(Expression query, QueryInfo[] queryInfos, IObjectReaderFactory factory, Object[] userArguments, ICompiledSubQuery[] subQueries)
       at System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query)
       at System.Data.Linq.ChangeDirector.StandardChangeDirector.DynamicUpdate(TrackedObject item)
       at System.Data.Linq.ChangeDirector.StandardChangeDirector.Update(TrackedObject item)
       at System.Data.Linq.ChangeProcessor.SubmitChanges(ConflictMode failureMode)
       at System.Data.Linq.DataContext.SubmitChanges(ConflictMode failureMode)
       at OrderTemplateTool.Data.OrderTemplateDataContext.SubmitChanges(ConflictMode failureMode) in C:\WebProjects\COTT\COTT\OrderTemplateTool.Data\OrderTemplateDataContext.cs:line 143
       at System.Data.Linq.DataContext.SubmitChanges()
       at OrderTemplateTool.Repository.Common.UnitOfWork.Save() in C:\WebProjects\COTT\COTT\OrderTemplateTool.Repository\Common\UnitOfWork.cs:line 82

【问题讨论】:

  • 有异常消息吗?
  • 实际的异常消息是什么?堆栈跟踪只告诉我们它是从哪里抛出的。
  • 执行超时已过期。

标签: sql-server


【解决方案1】:

这个

在操作完成之前经过的超时时间或 服务器没有响应。声明已终止。

在您的 Linq2SQL DataContext.SubmitChanges() 期间是否发生客户端超时。除非你的CommandTimeout设置的很短,否则很可能是服务器阻塞造成的,但需要服务器端监控才能诊断。尝试打开Query Store,并监控Session Wait Stats 中尝试插入的会话。

【讨论】:

  • 我确实检查了死锁,但没有死锁,或者这有什么不同?
  • 死锁将引发错误并回滚其中一个会话以打破死锁。这是不同的东西。
猜你喜欢
  • 2013-07-21
  • 2013-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-11
  • 2017-04-18
  • 1970-01-01
相关资源
最近更新 更多