私は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ファイルのテーブル名とカラム名を変更しました。
ご協力ありがとうございました
これを解決するには、QRTZ_テーブルの列をvarcharからnvarcharに切り替えましたか?また、あなたが最新のバージョンを言うとき、あなたが気にしていたバージョンは? –