首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Quartz.Net -死锁

Quartz.Net -死锁
EN

Stack Overflow用户
提问于 2011-07-27 23:32:59
回答 2查看 1.5K关注 0票数 3

我正在开发一个调度程序,它每30秒检查一次数据库中的任何更改。调查表包含诸如Name、WhenDue等字段(为了简单起见)。

这里是一步一步的我所做的-我实际上使用石英作业,它设置为触发每30秒增加更多的作业。

  • 加载上一次拉出日期/时间后修改的所有调查
  • 通过它们,添加新的或更新现有的作业/触发器

程序运行良好,当我第一次开始它,它得到所有的调查等。

但是,如果我进行了调查并更改了一些内容,那么我的程序就会在抛出异常时接收到更改。

Quartz.JobPersistenceException: Couldn't acquire next trigger: Couldn't retrieve trigger: Transaction (Process ID 59) was deadlocked on lock resources with another process and has been chosen as the deadlock victim.

这不知道为什么会发生这种事。任何建议都是受欢迎的,我现在花了几个小时试图找到它。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-28 15:52:22

我相信当您使用ADO时,这是一个已知的Quartz.Net问题。有一些建议似乎可以缓解这个问题,比如将UpdateLockRowSemaphore与SQLServer结合使用,或者将a存储转移到单独的数据库中。

下面是讨论这个问题的groups邮件列表中的线程

票数 0
EN

Stack Overflow用户

发布于 2011-07-27 23:53:30

看起来这是一个SQL异常,Quartz只是把它传递到堆栈中。尝试使用NOLOCK选项选择数据:

代码语言:javascript
复制
select dbo.Table.Column
from dbo.Table with(NOLOCK)
where dbo.Table.OtherColumn = @Param;

谷歌有关NOLOCK的更多信息。很可能您需要重新设计数据库模式或使用NOLOCK(不一定是坏事)。

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

https://stackoverflow.com/questions/6852483

复制
相关文章

相似问题

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