【问题标题】:"deadlock victim" in transaction, how to change the priority?事务中的“死锁受害者”,如何更改优先级?
【发布时间】:2011-06-09 08:35:13
【问题描述】:

我记录了一个由 ASP.NET 应用程序引发的异常。

消息:事务(进程 ID 56) 被锁死了|沟通 用另一个进程缓冲资源 并被选为死锁 受害者。重新运行事务。

我确定原因是,我在 SSMS 中直接在应用程序中同时查询的表上运行了一些 selects

所以现在我的问题是:

  • 我可以更改 SQL-Server 选择“死锁受害者”的优先级吗?我想选择“我自己”(SSMS) 作为死锁受害者,而不是 ASP.NET,因为它是一个时间要求严格的应用程序,我重新运行手动查询比让用户接受错误更容易。

提前谢谢你。

【问题讨论】:

    标签: sql-server tsql deadlock ssms database-deadlocks


    【解决方案1】:

    SET DEADLOCK_PRIORITY 允许您微调优先级

    您可以在 SSMS 会话中(每个查询窗口)或全局指定:

    【讨论】:

    • 谢谢。这意味着我可以将其更改为Low 以降低 SSMS 查询的优先级?那对我有用。是否有其他选项可以微调死锁优先级?我读过 SQL-Server 在默认情况下选择死锁受害者来回滚事务。对吗?
    • @Tim Schmelter:对于 SSMS 查询,“低”是肯定的。对其他选项不。根据我上面的链接,在最少资源上选择受害者进行回滚:“如果两个会话具有相同的死锁优先级,则 SQL Server 实例选择回滚成本较低的会话作为死锁受害者。”干杯
    • 诅咒 MS Dynamics NAV 不允许在其 C/AL 代码中更改此内容。如果它在用户和无人参与的进程之间(可以在失败时重试),我希望无人参与的进程“失败”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-11
    相关资源
    最近更新 更多