【问题标题】:SQL Locking - Timeout issueSQL 锁定 - 超时问题
【发布时间】:2014-11-26 12:07:43
【问题描述】:

我有一个处理请求队列的 SQL 作业。它更新表 1。这是一个漫长的过程,大约需要 15 分钟。

与此同时,我的应用程序尝试从 Table1 中读取记录并将它们显示在网格中。相应的 get proc 已将 tran 隔离级别设置为 read uncommited。 当 SQL 作业运行时,我的应用程序在填充网格时总是超时。如果 SQL 作业没有运行,它工作正常。

我的 proc 具有适当的隔离级别,所以我不明白为什么它仍然超时。 想法?

这是我的 get proc 的样子:

CREATE PROCEDURE dbo.MyGetProc(...)

作为 开始 将事务隔离级别设置为未提交; 设置无计数;

SELECT
    ...
FROM
    (
        SELECT
            ...
        FROM 
            dbo.Table1
            LEFT JOIN dbo.OtherTable1
        WHERE ...
        GROUP BY
         ...
    ) X
    INNER JOIN dbo.OtherTable2
    LEFT JOIN dbo.OtherTable3
    LEFT JOIN dbo.OtherTable4
    LEFT JOIN dbo.OtherTable5
    LEFT JOIN dbo.OtherTable6
    LEFT JOIN dbo.OtherTable6
ORDER BY
    ...

结束

【问题讨论】:

  • 你能发布一个超时代码的sn-p吗?通过这种方式,您将获得更强有力的答案。
  • 我在原始线程中添加了 get proc code sn-p

标签: locking


【解决方案1】:

使用

使用 (nolock) 从 table1 中选择 *

读取提交的数据。

【讨论】:

  • 我尝试使用 WITH (NOLOCK) & SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;一次和分开。但仍然是同样的问题。
猜你喜欢
  • 2018-05-12
  • 1970-01-01
  • 1970-01-01
  • 2023-04-11
  • 1970-01-01
  • 2017-02-18
  • 1970-01-01
  • 2014-01-06
  • 1970-01-01
相关资源
最近更新 更多