将 Quartz 连接到 MS Sql Server

问题描述 投票:0回答:1

我对 Quartz Job Scheduler 相当陌生,我可能会问一些愚蠢的问题,但是...我在将 Quartz.Server.2010 连接到 MS SQL Server 2012 时遇到问题。

我创建了几个工作正常的作业,但无法创建与 SQL Server 的连接。

我已经在

quartz.config
文件中编写了代码,但我不断收到无法解决的错误:

服务异常终止,Topshelf.ServiceBuilderException: 创建服务时发生异常:QuartzServer ---> Quartz.SchedulerException:未为数据源指定提供程序: 默认

即使我已经在

App.config
文件中设置了提供者:

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

我的问题可能是什么?

quartz-scheduler quartz.net
1个回答
7
投票

简短版本:

你有这个吗?

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

较长版本:

“默认”这个词没有什么超级特殊的含义。 在下面的 .config 中,我使用了“MySqlServerFullVersion”。

但下面是一个功能齐全的 Quartz.Impl.AdoJobStore.JobStoreTX

<quartz>

    <add key="quartz.scheduler.instanceName" value="ExampleDefaultQuartzSchedulerFromConfigFileSqlServer"/>
    <add key="quartz.scheduler.instanceId" value="instance_one"/>
    <add key="quartz.threadPool.threadCount" value="10"/>
    <add key="quartz.threadPool.threadPriority" value="Normal"/>

    <!-- 
    org.quartz.scheduler.idleWaitTime
    Is the amount of time in milliseconds that the scheduler will wait before re-queries for available triggers when the scheduler is otherwise idle. Normally you should not have to 'tune' this parameter, unless you're using XA transactions, and are having problems with delayed firings of triggers that should fire immediately.
    It defaults to every 30 seconds until it finds a trigger. Once it finds any triggers, it gets the time of the next trigger to fire and stops checking until then, unless a trigger changes.   -->
    <add key="quartz.scheduler.idleWaitTime" value ="5000"/>

    <!-- Misfire : see http://nurkiewicz.blogspot.com/2012/04/quartz-scheduler-misfire-instructions.html  -->
    <add key="quartz.jobStore.misfireThreshold" value="60000"/>
    <add key="quartz.jobStore.type" value="Quartz.Impl.AdoJobStore.JobStoreTX, Quartz"/>
    <add key="quartz.jobStore.tablePrefix" value="QRTZ_"/>
    <add key="quartz.jobStore.clustered" value="false"/>
    <add key="quartz.jobStore.driverDelegateType" value="Quartz.Impl.AdoJobStore.SqlServerDelegate, Quartz"/>


    <add key="quartz.jobStore.dataSource" value="MySqlServerFullVersion"/>

    <!-- 
    <add key="quartz.jobStore.dataSource" value="MySqlServerCe40"/>
    -->
    <!-- 
    <add key="quartz.jobStore.dataSource" value="MySqlServerCe351"/>
    -->



    <add key="quartz.dataSource.MySqlServerFullVersion.connectionString" value="Server=MyServer\MyInstance;Database=MyQuartzDB;Trusted_Connection=True;Application Name='quartz_config';"/>
    <add key="quartz.dataSource.MySqlServerFullVersion.provider" value="SqlServer-20"/>


    <!-- 
    <add key="quartz.dataSource.MySqlServerCe40.connectionString" value="Data Source=C:\quartznet\quartz2-sqlce4.sdf;Persist Security Info=False;"/>
    <add key="quartz.dataSource.MySqlServerCe40.provider" value="SqlServerCe-400"/>
    -->

    <!-- 
    <add key="quartz.dataSource.MySqlServerCe351.connectionString" value="Data Source=C:\quartznet\quartz2-sqlce35.sdf;Persist Security Info=False;"/>
    <add key="quartz.dataSource.MySqlServerCe351.provider" value="SqlServerCe-351"/>
    -->



</quartz>

PS

您创建了一个数据库,对吗?

https://github.com/MassTransit/MassTransit-Quartz/blob/master/setup_sql_server.sql

或这里:

https://github.com/quartznet/quartznet/blob/master/database/tables/tables_sqlServer.sql

如果上述 URL(至 setup_sql_server.sql)不再存在,您可以在互联网上搜索以下文本,很可能会找到 .sql。

ALTER TABLE [dbo].[QRTZ_TRIGGERS] 删除约束 FK_QRTZ_TRIGGERS_QRTZ_JOB_DETAILS

© www.soinside.com 2019 - 2024. All rights reserved.