您的位置:首页 > 数据库

Plugin调用SQL存储过程导致死锁的问题

2013-05-04 17:08 260 查看
场景:1.有一个实体,如account

2.为实体注册一个后期事件的Plugin,该Plugin的Isolation Mode必须注册到None,如下图所示:

3.在SQL Server中创建一个存储过程,在存储过程中有一个SQL语句:select * from accountBase

问题描述:在account实体的后期事件的Plugin中调用该存储过程,CRM表单界面全部变为只读,且不可操作,跟踪数据库发现,数据库已发生死锁.

问题原因:MSCRM 2011的前期事件阶段和后期事件阶段是数据库事务的一部分,因此当在account实体的Plugin中调用包含访问account实体数据的SQL存储过程时,发生资源相互等待,引发死锁.

解决方案:

第1种:修改数据库表。为需访问的字段建立索引,索引的建立方法可查询相关资料,不建议使用此方案。

第2种:修改Plugin的Step的设置,将Execution Mode设置为Asynchronous,即异步执行Plugin。如下图所示:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: