【问题标题】:Trap deadlock error in a SQL stored procedure在 SQL 存储过程中捕获死锁错误
【发布时间】:2014-11-27 16:49:34
【问题描述】:

我有一个用于更新表的简单 SQL 存储过程,有时我会遇到阻止更新的死锁。 我可以在存储过程中使用什么来捕获此死锁,然后重试更新?

【问题讨论】:

  • 我建议在您发送更新的应用程序中处理这个问题。
  • SQL 只是 结构化查询语言 - 许多数据库系统使用的语言,但不是数据库产品...很多事情都是特定于供应商的 - 所以我们真的需要知道您正在使用什么数据库系统(以及哪个版本)(请相应地更新标签)......

标签: sql sql-server-2008 stored-procedures deadlock


【解决方案1】:

您应该在应用程序中创建一个错误处理程序来处理这个问题。请确保在重新提交查询之前给它一些时间。

【讨论】:

    【解决方案2】:

    你可以试试/抓住它
    http://technet.microsoft.com/en-us/library/aa175791%28v=sql.80%29.aspx
    DECLARE @Tries tinyint SET @Tries = 1 WHILE @Tries <= 3 BEGIN BEGIN TRANSACTION BEGIN TRY INSERT Authors VALUES (@au_id, @au_lname, '', '', '', '', '', '11111', 0) WAITFOR DELAY '00:00:05' SELECT * FROM authors WHERE au_lname LIKE 'Test%' COMMIT BREAK END TRY BEGIN CATCH SELECT ERROR_NUMBER() AS ErrorNumber ROLLBACK SET @Tries = @Tries + 1 CONTINUE END CATCH; END

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多