首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >含Sqlite的AdoJobStore

含Sqlite的AdoJobStore
EN

Stack Overflow用户
提问于 2014-10-21 13:28:59
回答 1查看 2.9K关注 0票数 5

我终于能够为Server设置ADOJobStore,但我也希望它能与Sqlite一起工作,而且我还没有让它开始工作。这是我的quartz.config的一部分,我为AdoJobStore设置属性

代码语言:javascript
复制
# to use the sqlite store, uncomment all of this 
quartz.jobStore.type = Quartz.Impl.AdoJobStore.JobStoreTX, Quartz 
quartz.jobStore.dataSource = default 
quartz.dataSource.default.connectionString = Data Source=postbag-jobs.db;Version=3;Foreign Keys=ON;
quartz.jobStore.tablePrefix = QRTZ_ 
quartz.jobStore.clustered = false
quartz.jobStore.lockHandler.type = Quartz.Impl.AdoJobStore.UpdateLockRowSemaphore, Quartz 
quartz.jobStore.driverDelegateType = Quartz.Impl.AdoJobStore.StdAdoDelegate, Quartz 
quartz.dataSource.default.provider = SQLite-10 
quartz.jobStore.useProperties = true

我分别创建了Sqlite数据库,并将其放置在服务器的工作目录中。然而,当服务初始化时,我得到一个SchedulerException,它说:

代码语言:javascript
复制
Could not Initialize DataSource: default

用这个InnerException

代码语言:javascript
复制
Error while reading metadata information for provider 'SQLite-10'
Parameter name: providerName

我必须向服务器提供Sqlite .DLL吗?因为我不需要在Server上这样做。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-23 10:53:05

如果您想在 Quartz.net中使用Sqlite,则必须使用以下键:

代码语言:javascript
复制
<add key="quartz.threadPool.type" value="Quartz.Simpl.SimpleThreadPool, Quartz" />
<add key="quartz.threadPool.threadCount" value="10" />
<add key="quartz.jobStore.type" value="Quartz.Impl.AdoJobStore.JobStoreTX, Quartz" />
<add key="quartz.jobStore.misfireThreshold" value="60000" />
<add key="quartz.jobStore.lockHandler.type" value="Quartz.Impl.AdoJobStore.UpdateLockRowSemaphore, 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.driverDelegateType" value="Quartz.Impl.AdoJobStore.SQLiteDelegate, Quartz" />
<add key="quartz.dataSource.default.provider" value="SQLite-10" />
<add key="quartz.dataSource.default.connectionString" value="Data Source=postbag-jobs.db;Version=3;" />

我注意到您的driverDelegateType密钥不是正确的。你应该使用SQLiteDelegate

代码语言:javascript
复制
<add key="quartz.jobStore.driverDelegateType" value="Quartz.Impl.AdoJobStore.SQLiteDelegate, Quartz" />

您还需要安装ADO.NET provider (nuget):

代码语言:javascript
复制
Install-Package System.Data.SQLite.Core

您可能遇到的另一个问题是与提供程序的兼容性(1.0.94.0)和Quartz.Net中定义的问题(1.0.88.0)。你可以找到信息here

要解决这个问题,只需将此部分添加到您的app.config中即可。

代码语言:javascript
复制
<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
            <assemblyIdentity name="System.Data.SQLite" publicKeyToken="db937bc2d44ff139" culture="neutral" />
            <bindingRedirect oldVersion="1.0.88.0" newVersion="1.0.94.0" />
        </dependentAssembly>
    </assemblyBinding>
</runtime>

可以在github上找到一个有用的示例here

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26487925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档