我有一个WCF应用程序,里面有5-6个EF模型。在生产环境中,只运行此应用程序的一个实例。
但在开发过程中,有5位开发人员同时在开发它。 (针对同一个数据库。)
我们注意到有时我们的SQL Server 2008 R2数据库上的表被锁定。似乎是有人在调试时做了一步,并且必须让它保持几分钟的步骤。
我很好奇为什么EF会锁定桌面。怎么会有人使用EF锁定桌面?我该怎么做才能防止这种情况发生?
注意:此相同的应用程序访问WCF数据服务(OData)端点以获取其某些数据(来自同一数据库)。我没有看到OData如何锁定数据库,但我想如果重要的话我会提到它。
答案 0 :(得分:1)
只有一种解决方案。每个开发人员都将在本地安装数据库,并在自己的环境中运行调试会话!其他任何错误的开发环境。使用SQL Server Express或SQL Server Developer版。
答案 1 :(得分:0)
我们所能做的就是冒险进行各种猜测。例如。如果您的数据模型缺少正确的索引,则记录查找将变为表扫描并扫描escalate locks到表级。
真正的解决方案是正确调查阻止。究竟是什么导致了块正在等待什么资源?什么会话/事务/语句保存其他会话/事务/语句所需的资源。
使用Activity Monitor或who_is_active或sp_blitz。阅读Waits and Queues白皮书。