【发布时间】:2014-01-29 15:50:47
【问题描述】:
我花了一天的大部分时间试图让 Quartz.net 以 Azure 工作者角色运行。它使用 SQL Azure 实例作为其持久存储。
我的配置如下:
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 ID=xxx@xxx;Password=xxx;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;
quartz.dataSource.myDS.provider=SqlServer-20
为了创建架构,我使用了 Quartz.net zip 文件中的脚本。实际上,我尝试了其中两个:
它们在我下载的 Quartz.NET-2.2.1.zip 中。我必须在第一个脚本的ALTER TABLE 语句中删除ON [PRIMARY] 才能使其工作;否则它会抱怨此版本的 SQL Server 不支持“文件组引用和分区方案”。
第二个无需修改即可工作。
无论我使用哪个脚本来创建架构,Quartz.net 在我尝试删除作业时都会抛出错误:
“无法删除触发器:此版本的 SQL Server 不支持没有聚集索引的表。请创建聚集索引并重试。”
我可以添加作业(我可以看到正在添加到数据库的行),但是每当我尝试删除一个作业时,Quartz.net 就会出现问题。
我能做些什么来解决这个问题?
谢谢!
【问题讨论】:
-
发布脚本。就个人而言,我会使用 sql profiler 在本地(不是 azure)运行它,以查看当我在 Quartz 上调用 delete 函数时会发生什么,以查看正在使用的实际 sql。正如它所说,Azure 不允许创建没有聚集索引的表,因此您需要找出到底发生了什么。
-
看看 Gaurav 去年在 Azure 上运行 Quartz 的工作(表存储而不是 sql)gauravmantri.com/2013/01/23/…
-
我将脚本添加到原始问题中。
标签: sql-server azure azure-sql-database quartz.net