2011-07-03 81 views
0

我在玩最新版本的Quartz.NET。我使用AdoJobStore(使用SqlServer-20委託)來存儲我的作業。我創造新的就業機會是這樣的:Quartz.NET和死鎖

 JobDetail jobDetail = new JobDetail("myJob", null, typeof(HelloJob)); 
     jobDetail.JobDataMap["dsa"] = "hello"; 
     CronTrigger trigger = new CronTrigger("MyTrigger", null, "0/1 * * * * ?"); 
     trigger.StartTimeUtc = TriggerUtils.GetEvenHourDate(DateTime.UtcNow.AddMonths(-3)); 
     trigger.Name = "MyTrigger"; 
     sched.ScheduleJob(jobDetail, trigger); 

//高就

JobDetail jobDetail = new JobDetail("myJob_Bye", null, typeof(HelloJob)); 
jobDetail.JobDataMap["dsa"] = "Good Bye"; 
CronTrigger trigger = new CronTrigger("MyTrigger", null, "0/2 * * * * ?"); 
trigger.StartTimeUtc = TriggerUtils.GetEvenHourDate(DateTime.UtcNow.AddMonths(-3)); 
trigger.Name = "MyTrigger2"; 
sched.ScheduleJob(jobDetail, trigger); 

的問題是,當我開始調度,它適用於一些(觸發上述配置的工作)的時間,然後拋出的SQLException消息「事務(進程ID 53)與另一進程在鎖資源上死鎖,並被選爲死鎖受害者,重新運行事務。」 JobStoreSupport.cs中的錯誤發生在第4217行。看起來像鎖處理存在問題。任何人有任何想法我怎麼能解決這個問題。

P.S.這個石英裝配是我正在玩的我的定製版本。我只是在AdoConstants.cs和相應的.sql文件中更改了表名和列名。

感謝您的支持

回答

1

我發現出了什麼問題。看起來像使用SQL Server時,你不應該使用varchar數據類型。 Quartz.NET有一些問題。相反,切換到nvarchar並且問題將被修復。

+0

你是否將QRTZ_表列從varchar切換到nvarchar來解決這個問題?另外,當你說最新版本時,你心目中的版本是什麼? –