2011-07-03 6 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)이 다른 프로세스와의 잠금 리소스에서 교착 상태에 있었고 교착 상태 희생자로 선택되었습니다. 트랜잭션을 다시 실행하십시오." 4217 줄의 JobStoreSupport.cs에서 오류가 발생합니다. 잠금 처리에 문제가있는 것 같습니다. 누구나 어떻게이 문제를 해결할 수 있는지 알 수 있습니다.

P. 이 석영 어셈블리는 제가 가지고 놀고있는 커스텀 빌드입니다. AdoConstants.cs와 해당 .sql 파일에서 테이블과 열 이름을 변경했습니다.

지원해 주셔서 감사합니다.

답변

1

무엇이 잘못되었는지 알아 냈습니다. SQL Server를 사용할 때는 varchar 데이터 형식을 사용하지 않아야합니다. Quartz.NET에는 몇 가지 문제점이 있습니다. 대신 nvarchar로 전환하면 문제가 해결됩니다.

+0

이 문제를 해결하기 위해 QRTZ_ 테이블 열을 varchar에서 nvarchar로 전환 했습니까? 또한, 최신 버전을 말할 때 정확히 염두에 두었던 버전이 무엇입니까? –