我有一个SQL作业,它处理一个请求队列。它更新了Table1。这是一个漫长的过程,需要15分钟。
同时我的应用程序尝试从Table1读取记录并在网格中显示它们。相应的get proc已将tran隔离级别设置为uncommited。 当SQL作业运行时,我的应用程序总是在填充网格时超时。如果SQL作业没有运行,它可以正常工作。
我的proc有适当的隔离级别,所以我不知道为什么它还有时间。 想法?
以下是我的get proc的样子:
CREATE PROCEDURE dbo.MyGetProc(...)
AS 开始 设置交易隔离级别无法阅读; SET NOCOUNT ON;
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
...
END
答案 0 :(得分:1)
使用
使用(nolock)
从table1中选择*读取提交的数据。