gpt4 book ai didi

c# - SQL 服务器,C# : Timeout exception on Transaction Rollback

转载 作者:可可西里 更新时间:2023-11-01 03:07:09 25 4
gpt4 key购买 nike

我遇到了一个奇怪的问题。我有一个 .NET 程序,我的流程逻辑需要在 SQL Server 2005 数据库上进行长时间运行的事务(~20 分钟)。没关系,因为没有人并行访问数据库。当出现问题时,应该回滚事务。

在我的 DbTransaction 对象上的 Rollback() 操作很少且没有任何可见模式 抛出 SqlException:

Message: "Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding."StackTrace:   at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)   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.ReadPacket(Int32 bytesExpected)   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.TdsParser.TdsExecuteTransactionManagerRequest(Byte[] buffer, TransactionManagerRequestType request, String transactionName, TransactionManagerIsolationLevel isoLevel, Int32 timeout, SqlInternalTransaction transaction, TdsParserStateObject stateObj, Boolean isDelegateControlRequest)   at System.Data.SqlClient.SqlInternalConnectionTds.ExecuteTransactionYukon(TransactionRequest transactionRequest, String transactionName, IsolationLevel iso, SqlInternalTransaction internalTransaction, Boolean isDelegateControlRequest)   at System.Data.SqlClient.SqlInternalConnectionTds.ExecuteTransaction(TransactionRequest transactionRequest, String name, IsolationLevel iso, SqlInternalTransaction internalTransaction, Boolean isDelegateControlRequest)   at System.Data.SqlClient.SqlInternalTransaction.Rollback()   at System.Data.SqlClient.SqlTransaction.Rollback()

我不知道这是否真的是超时问题,因为代码有时有效有时无效。此外,我知道的唯一超时是 ConnectionTimeoutCommandTimeout,但显然在这种情况下这些不是问题。

有人知道这个问题吗?

非常感谢,马蒂亚斯

最佳答案

Sql Server 团队的 Matt Neerincx 在 MSDN forum question 中解决了这个问题.奇怪但真实的是,连接字符串中的连接超时用于设置超时。由他查看源代码验证。

关于c# - SQL 服务器,C# : Timeout exception on Transaction Rollback,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3977219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com