【问题标题】:SQL deadlock when running select query运行选择查询时出现 SQL 死锁
【发布时间】:2019-06-27 18:34:16
【问题描述】:

我有运行以下 SQL 查询的 Powershell 脚本。此脚本计划每 5 分钟运行一次。你能告诉我每5分钟查询一次数据库是否会导致数据库死锁。有人可以说明死锁在 SQL 中是如何工作的。

SELECT TOP 1000 * FROM TABLE1

我不关心从选择查询中获得的数据。我正在提取这些数据以检查响应时间。参数WITH(NOLOCK)是否防止死锁?

【问题讨论】:

  • 或者你可以搜索一下,有很多好的结果。 sql server what is a deadlock.
  • 也许你的同事的意思是阻塞而不是死锁。在这种情况下,您可以添加 NOLOCK 提示来避免这种情况,但要了解结果可能在事务上不一致,包括在某些情况下跳过或重复的行。
  • 请允许我建议您忽略该同事在该领域的所有其他 cmets。如前所述,您问一个理论问题是因为有人这么说。不要试图解决不存在的问题。没有 order by 子句的 TOP 是不明智的 - 但这是一个非常不同且不相关的问题。
  • 我没有使用锁删除了我的答案,SMor 是正确的。建议在不了解副作用或解释副作用的情况下玩锁是不明智的。

标签: sql-server database powershell


【解决方案1】:

仅此脚本将永远不会死锁您的表,因为它只是一个 SELECT。 检查 SSMS 中的 SQL 活动监视器是否有任何其他进程正在更新表,因为当您同时选择和更新记录时会发生死锁。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-07
    • 1970-01-01
    • 2020-06-07
    • 1970-01-01
    • 1970-01-01
    • 2019-06-18
    相关资源
    最近更新 更多