2010-09-29 10 views
5

Quartz.NET'i bir veritabanı, yani ADO.NET ile kullanıyorum. Sorun, işlerim oluşturulduğunda, veritabanına hiç kaydedilmiyor. Her şeyi doğru yapılandırdım mı? SQL Server Express kullanıyorum ve veritabanımın yolu 'chris \ sqlexpress.Quartz.dbo'. yapılandırma dosyasınınADO.NET Quartz.NET ile

İlgili parçalar:

quartz.jobStore.type = Quartz.Impl.AdoJobStore.JobStoreTX, Quartz 
quartz.jobStore.dataSource = default 
quartz.jobStore.tablePrefix = QRTZ_ 
quartz.jobStore.clustered = true 
quartz.jobStore.lockHandler.type = Quartz.Impl.AdoJobStore.UpdateLockRowSemaphore, Quartz 
quartz.jobStore.driverDelegateType = Quartz.Impl.AdoJobStore.SqlServerDelegate, Quartz 
quartz.dataSource.default.connectionString = 
Server=localhost;Database=Quartz;Trusted_Connection=True;"; 
quartz.dataSource.default.provider = SqlServer-20 
quartz.jobStore.useProperties = true 

Zamanlayıcı initilisation ve iş ekleme:

ISchedulerFactory schedService = new StdSchedulerFactory(); 
IScheduler sched = schedService.GetScheduler(); 

JobDetail jobDetail = new JobDetail("1", "1", typeof(copyJob)); 
jobDetail.JobDataMap["initialPath"] = initpath; 
jobDetail.JobDataMap["targetPath"] = targetpath; 
jobDetail.JobDataMap["regex"] = regex; 

CronTrigger trigger = new CronTrigger("trigger1", "group1", "1", "1", TextBox4.Text); 
sched.AddJob(jobDetail, true); 
DateTime ft = sched.ScheduleJob(trigger); 
ft = TimeZoneInfo.ConvertTimeFromUtc(ft, trigger.TimeZone); 

Response.Write(string.Format("{0} has been scheduled to run at: {1} and repeat based on expression: {2}", jobDetail.FullName, ft.ToString("r"), trigger.CronExpressionString)); 

cevap

5

Sağ, yardıma ihtiyaç duyan herkes için dışarı çalıştı. Bağlantı dizgem yanlıştı ve sunucu bilgilerini Quartz.NET örneklerinde Örnek 13'teki gibi kodlamak zorunda kaldım. Bu harika bir framework :)

4

Bu ve web.config bölümü ile benzer sorunlar yaşadım. Bunu beğenmedim, sonuçta web.config dosyasındaki özellikleri yüklemek ve bunları StdSchedulerProvider sınıfına yerleştirmek için bir kod yazdım.

//force the properties to be loaded from the web.config section 
      NameValueCollection quartzSection = (NameValueCollection)ConfigurationManager.GetSection("quartz"); 
      if (quartzSection != null) 
      { 
       var quartzProperties = quartzSection.AllKeys.SelectMany(quartzSection.GetValues, (k, v) => new { key = k, value = v }); 

       foreach (var property in quartzProperties) 
       { 
        properties.Add(property.key, property.value); 
       } 
      } 

Benim web.config bölümü şu şekildedir:

<configSections> 
    <section name="quartz" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0,Culture=neutral,PublicKeyToken=b77a5c561934e089" /> 
    </configSections> 

    <quartz> 
     <add key="quartz.scheduler.instanceName" value="SchedulingPOC"/> 
     <add key="quartz.scheduler.instanceId" value="SchedulingPOC"/> 

     <!-- Configure Thread Pool --> 
     <add key="quartz.threadPool.type" value="Quartz.Simpl.SimpleThreadPool, Quartz" /> 
     <add key="quartz.threadPool.threadCount" value="10" /> 
     <add key="quartz.threadPool.threadPriority" value="Normal" /> 

     <!-- Configure Job Store --> 
     <add key="quartz.jobStore.misfireThreshold" value="60000" /> 
     <add key="quartz.jobStore.type" value="Quartz.Impl.AdoJobStore.JobStoreTX, Quartz" /> 
     <add key="quartz.jobStore.useProperties" value="true" /> 
     <add key="quartz.jobStore.dataSource" value="default" /> 
     <add key="quartz.jobStore.tablePrefix" value="QRTZ_" /> 
     <add key="quartz.jobStore.lockHandler.type" value="Quartz.Impl.AdoJobStore.UpdateLockRowSemaphore, Quartz" /> 

     <add key="quartz.dataSource.default.connectionString" value="Server=.\SQLExpress;Database=QuartzPOC;Trusted_Connection=True;"/> 

     <add key="quartz.dataSource.default.provider" value="SqlServer-20" /> 
     </quartz> 

Quartz.net sonra onu istediği gibi veritabanında oturum başlamış. Bu çalışma için neden bu kadar zor bir fikir yok.

+0

- Quartz, '' bölümüne bakar ve buradan yüklenen özellikleri yükler, bu nedenle neden bu kodu tekrarlamak için kodunuz var? Belki eski bir versiyon? –