2014-01-29 17 views
2

我花了一天的较好时间试图让Quartz.net在Azure工作者角色中运行。它使用SQL Azure实例作为其持久存储。Azure中的Quartz.net:删除作业时“不支持聚簇索引的表”不支持

我得配置是下面这样的:

quartz.jobStore.type=Quartz.Impl.AdoJobStore.JobStoreTX, Quartz 
quartz.jobStore.driverDelegateType=Quartz.Impl.AdoJobStore.SqlServerDelegate, Quartz 
quartz.jobStore.tablePrefix=QRTZ_ 
quartz.jobStore.dataSource=myDS 
quartz.dataSource.myDS.connectionString=Server=xxx,1433;Database=xxx;User [email protected];Password=xxx;Trusted_Connection=False;Encrypt=True;Connection Timeout=30; 
quartz.dataSource.myDS.provider=SqlServer-20 

创建模式,我用的是排在Quartz.net zip文件的脚本。其实,我想他们两个:

  1. tables_sqlServer.sql
  2. tables_sqlServerCe.sql

他们在Quartz.NET-2.2.1.zip我下载。我必须删除第一个脚本的ALTER TABLE语句中的ON [PRIMARY]以使其起作用;否则它会抱怨此版本的SQL Server不支持“文件组引用和分区方案”。

第二个没有修改就工作。

“无法删除触发:没有聚集索引的表不支持

无论剧本我用它来创建架构,Quartz.net当我尝试删除作业抛出一个错误这个版本的SQL Server,请创建一个聚集索引,然后重试。“

我可以添加作业(我可以看到要添加到数据库的行),但是每当我尝试删除一行时,Quartz.net都会抛出一个合适的结果。

我能做些什么来解决这个问题?

谢谢!

+0

发布的脚本。就我个人而言,我会使用sql profiler在本地运行它(不是天蓝色),以查看在Quartz上调用delete函数时会发生什么情况,以查看正在使用的实际sql。如上所述,Azure不允许在没有聚集索引的情况下创建表,因此您需要了解究竟发生了什么。 – ojf

+0

看看Gaurav去年在Quartz上运行的工作(表格存储而不是sql)http://gauravmantri.com/2013/01/23/building-a-simple-task-scheduler-in-windows -azure/ –

+0

我将脚本添加到原始问题中。 –

回答

1

我已经更新了,跑烟雾测试脚本的改变,应该使之在SQL Azure的工作,最新的脚本可以在这里找到:

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

+1

是的,我只是发现自己这个问题是'QRTZ_BLOB_TRIGGERS'表上缺少聚簇主键。感谢您的努力! –

+0

谢谢@JanVandenbosch,那是我遇到的同样的问题。 – Jazaret

+0

SQL Azure现在支持V12服务器上的堆,所以这个问题不应该再成为问题。 https://msdn.microsoft.com/library/ms188029.aspx?f=255&MSPPError=-2147217396 – ckarst