Quartz 调度程序无法初始化数据源:myDS

Quartz Scheduler Could not Initialize DataSource: myDS

我在 MS SQL 服务器上使用 Quartz 3.0.2。我在 GetScheduler 上得到 "Could not Initialize DataSource: myDS. There is no metadata information for provider 'SqlServer-20'\r\nParameter name: providerName."。

这是我的代码:

StdSchedulerFactory schedFact = new StdSchedulerFactory();
IScheduler scheduler = await schedFact.GetScheduler();

这是我的web.config

<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="DefaultQuartzScheduler" />
<add key="quartz.threadPool.type" value="Quartz.Simpl.SimpleThreadPool, Quartz" />
<add key="quartz.threadPool.threadCount" value="1" />
<add key="quartz.threadPool.threadPriority" value="Normal" />
<add key="quartz.jobStore.misfireThreshold" value="60000" />
<add key="quartz.jobStore.type" value="Quartz.Impl.AdoJobStore.JobStoreTX, Quartz" />
<add key="quartz.jobStore.driverDelegateType" value="Quartz.Impl.AdoJobStore.StdAdoDelegate, Quartz" />
<add key="quartz.jobStore.tablePrefix" value="QRTZ_" />
<add key="quartz.jobStore.dataSource" value="myDS" />
<add key="quartz.dataSource.myDS.connectionString" value="Data Source=.;integrated security=true;Initial Catalog=mudatabase;MultipleActiveResultSets=True;Trusted_Connection=True" />
<add key="quartz.dataSource.myDS.provider" value="SqlServer-20" />
</quartz>

我应该将我的提供商更改为 SqlServer

所以我的最终配置是

<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="DefaultQuartzScheduler" />
<add key="quartz.threadPool.type" value="Quartz.Simpl.SimpleThreadPool, Quartz" />
<add key="quartz.threadPool.threadCount" value="1" />
<add key="quartz.threadPool.threadPriority" value="Normal" />
<add key="quartz.serializer.type" value="binary" />
<add key="quartz.jobStore.misfireThreshold" value="60000" />
<add key="quartz.jobStore.type" value="Quartz.Impl.AdoJobStore.JobStoreTX, Quartz" />
<add key="quartz.jobStore.driverDelegateType" value="Quartz.Impl.AdoJobStore.StdAdoDelegate, Quartz" />
<add key="quartz.jobStore.tablePrefix" value="QRTZ_" />
<add key="quartz.jobStore.dataSource" value="myDS" />
<add key="quartz.dataSource.myDS.connectionString" value="Data Source=.;integrated security=true;Initial Catalog=mudatabase;MultipleActiveResultSets=True;Trusted_Connection=True" />
<add key="quartz.dataSource.myDS.provider" value="SqlServer" />
</quartz>

我在将 Quartz 3.3.3 与 .Net Core 3.1 集成时遇到了类似的问题。

对于 .Net Core,您需要确保安装“Microsoft.Data.SqlClient”nuget 以便 Quartz 与 SqlServer 数据提供程序无缝协作。