nservicebus、azure和事务范围

nservicebus、azure和事务范围,nservicebus,sql-server-2012,azure-worker-roles,Nservicebus,Sql Server 2012,Azure Worker Roles,我有一件奇怪的事情正在发生,我怀疑它与nservicebus中的事务范围有关,但我想我应该在走错方向之前问一下 这是我的问题:我有一个端点托管在azure worker角色中,与azure队列进行传输。我使用EntityFramework5对SQLServer2012在一些处理程序中进行非常简单的数据库写入。在我将工作者角色扩展到多个实例之前,一切都很好,一切都正常 当我这样做时,我开始出现零星的死锁错误: 错误1205:事务(进程ID)在另一个进程的资源上被死锁,并被选为死锁受害者。重新运行事

我有一件奇怪的事情正在发生,我怀疑它与nservicebus中的事务范围有关,但我想我应该在走错方向之前问一下

这是我的问题:我有一个端点托管在azure worker角色中,与azure队列进行传输。我使用EntityFramework5对SQLServer2012在一些处理程序中进行非常简单的数据库写入。在我将工作者角色扩展到多个实例之前,一切都很好,一切都正常

当我这样做时,我开始出现零星的死锁错误: 错误1205:事务(进程ID)在另一个进程的资源上被死锁,并被选为死锁受害者。重新运行事务

我应该考虑更改端点中的默认隔离级别,还是我在这里考虑的方向不对


我已经对所有语句运行了explain plains,因此我确信没有完全扫描,并且数据库没有加载;唯一可能导致这种情况的变量是在azure中水平扩展更多实例。

将默认隔离模式更改为“读取已提交”解决了此问题。
谢谢

nsb3没有更改默认范围,这意味着您处于可序列化状态。nsb4将默认为readcommitted()。因此,尝试更改isolationlevel,看看这是否有帮助(Configure.isolationlevel(…))是的,这就是问题所在。非常感谢。