提供商'SqlServer-20'没有元数据信息

feO*_*O2x 4 .net c# sql-server quartz.net .net-core

我想测试Quartz.NET 3.0 for .NET Core的SQL数据库功能.不幸的是,我无法StdSchedulerFactory正确配置,我总是在调用时遇到以下异常StdSchedulerFactory.GetScheduler:

System.ArgumentOutOfRangeException: 
There is no metadata information for provider 'SqlServer-20'
Parameter name: providerName
   at Quartz.Impl.AdoJobStore.Common.DbProvider.GetDbMetadata(String providerName)
   at Quartz.Impl.AdoJobStore.Common.DbProvider..ctor(String dbProviderName, String connectionString)
   at Quartz.Impl.StdSchedulerFactory.<Instantiate>d__66.MoveNext()
Run Code Online (Sandbox Code Playgroud)

我已使用以下值配置工厂:

var configuration = new NameValueCollection
{
    { "quartz.jobStore.type", "Quartz.Impl.AdoJobStore.JobStoreTX, Quartz" },
    { "quartz.jobStore.driverDelegateType", "Quartz.Impl.AdoJobStore.SqlServerDelegate, Quartz" },
    { "quartz.jobStore.tablePrefix", "QRTZ_" },
    { "quartz.jobStore.dataSource", "default" },
    { "quartz.dataSource.default.connectionString", "Server=(localdb)\\mssqllocaldb;Database=QuartzTest;Trusted_Connection=True;MultipleActiveResultSets=true" },
    { "quartz.dataSource.default.provider", "SqlServer-20" },
    { "quartz.jobStore.useProperties", "true" },
    { "quartz.serializer.type", "json" }
};

var schedulerFactory = new StdSchedulerFactory(configuration);
Run Code Online (Sandbox Code Playgroud)

如您所见,我目前正在瞄准LocalDB(v12.0.2000).我也在SQL Server Express上检查了它 - 结果相同.

我怎样才能避免这种异常?

  • 我错过了我应该配置的任何属性吗?
  • 我是否必须为数据库提供一些数据?我只执行了tables_sqlServer.sql脚本.
  • SqlServer-20数据库驱动程序应作为.NET 3.5的一部分安装,还是需要单独安装?
  • Quartz.NET目前不支持.NET Core的这项功能吗?我使用的是3.0.0-alpha2版本.
  • 我应该针对其他NuGet包吗?我引用了Quartz和Quartz.Serialization.Json

小智 6

目前根据beta1的更新日志,提供商没有版本.因此,SqlServer的正确提供程序配置是:

["quartz.dataSource.sqlserver.provider"] = "SqlServer"
Run Code Online (Sandbox Code Playgroud)

来源:https://github.com/quartznet/quartznet/blob/e3ff6936ea1a76480b7671e2b5c468c1b67f4897/changelog.md#release-30-beta-1-oct-8-2017