我在C#Windows服务中使用Quartz.NET。它与之通信的数据库用于持久存储数据和其他内容,它们位于运行SQL Server 2008的同一网络中的另一台计算机上。Quartz JobStoreTX超时已过期
每天晚上我都会让服务继续运行并回家。当我早上回来时,Quartz.NET处于不良状态。第一个错误总是在下午6点左右发生SQL超时。
这很奇怪,因为数据库是接近怠速到那个时候,和石英的不断爆震不会给连接一个机会,过期或什么:
(编辑:请参见下面的新的细节)
2014-10-29 18:22:04,435 [InfoSnapScheduler_QuartzSchedulerThread] WARN Quartz.Impl.AdoJobStore.JobStoreTX [(null)] – ConnectionAndTransactionHolder passed to RollbackConnection was null, ignoring
2014-10-29 18:22:04,435 [InfoSnapScheduler_QuartzSchedulerThread] ERROR Quartz.Core.ErrorLogger [(null)] – An error occurred while scanning for the next trigger to fire.
Quartz.JobPersistenceException: Failure setting up connection. ---> 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()
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.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.SqlInternalConnection.BeginSqlTransaction(IsolationLevel iso, String transactionName)
at System.Data.SqlClient.SqlInternalConnection.BeginTransaction(IsolationLevel iso)
at System.Data.SqlClient.SqlConnection.BeginDbTransaction(IsolationLevel isolationLevel)
at System.Data.Common.DbConnection.System.Data.IDbConnection.BeginTransaction(IsolationLevel isolationLevel)
at Quartz.Impl.AdoJobStore.JobStoreSupport.GetConnection() in c:\Work\OpenSource\quartznet\src\Quartz\Impl\AdoJobStore\JobStoreSupport.cs:line 380
,它不断循环的第1行中
WARN后我不为关心超时错误 - 数据库穿帮镜头发生。我会假设石英不是要责怪那里。但是我需要能够从这些错误中恢复,并保持Quartz处于良好状态以保持ping状态,尽管在等待之后。有什么我可以覆盖或修改,以检查触发器时捕获错误?
替代问题:如何修复/防止ConnectionAndTransactionHolder
问题?
编辑:服务器管理员与我共享数据库一天四次复制工作,包括 - 等待它! - 6p。我会认为这是原因。最初的问题仍然是如何从它产生的错误中恢复。
你能分享你的配置文件吗? – 2014-10-30 14:45:05
@CircularReference:可能是一个严重消毒的版本。如果你想看到它的原因是关于超时本身,那么这件事已经解决了。查看修改。 – spamguy 2014-10-30 14:53:02
“quartz.jobstore.misfirethreshold”的值是多少? – 2014-10-30 15:01:40