【问题标题】:SQL Server Timeout after 10 Seconds10 秒后 SQL Server 超时
【发布时间】:2011-04-12 13:47:59
【问题描述】:

我们在 C# 遗留应用程序中使用 OleDbConnection 连接到 SQL Server 2000

  • 连接字符串包含“Connect Timeout=5;”和
  • 我们将 CommandTimeout 设置为 30 秒。

然而,当我们在服务器运行缓慢的情况下运行命令(事务中的一些插入)时,查询仅在 10 秒后超时。

System.Data.SqlClient.SqlException: Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding.
   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.SqlInternalConnectionTds.ExecuteTransactionPreYukon(TransactionRequest transactionRequest, String transactionName, IsolationLevel iso, SqlInternalTransaction internalTransaction)
   at System.Data.SqlClient.SqlInternalConnectionTds.ExecuteTransaction(TransactionRequest transactionRequest, String name, IsolationLevel iso, SqlInternalTransaction internalTransaction)
   at System.Data.SqlClient.SqlInternalTransaction.Commit()
   at System.Data.SqlClient.SqlTransaction.Commit()
   [...]

我错过了什么?是否有我没有设置的默认为 10 秒的超时值?

【问题讨论】:

    标签: .net sql-server timeout


    【解决方案1】:

    我认为这不太可能,因为通常会产生不同的异常,但也许您遇到了默认的事务超时,顺便说一下 10 秒。

    将以下内容添加到您的“app.config”中,并将超时设置为更大的值:

    <system.transactions>
         <defaultSettings timeout="00:10:00"/>  
    </system.transactions>
    

    请注意,如果这确实解决了您的问题,您可能需要在代码中指定实际超时,仅针对有问题的事务(例如,通过使用 TransactionScope 类的相应选项)。

    【讨论】:

    • 感谢您的帮助!我目前无法验证这是否有效,但下次出现问题时我会尝试。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-07
    • 2017-10-19
    • 1970-01-01
    • 1970-01-01
    • 2017-06-11
    • 2012-04-08
    • 2017-03-03
    相关资源
    最近更新 更多