2014-10-01 111 views
0

我有一個SQL作業,它處理一系列請求。它更新Table1。這是一個漫長的過程,需要15分鐘。SQL鎖定 - 超時問題

與此同時,我的應用程序嘗試從Table1中讀取記錄並將它們顯示在網格中。相應的get proc已將tran隔離級別設爲read uncommited。 當SQL作業正在運行時,我的應用程序在填充網格時總是超時。如果SQL作業未運行,則可以正常工作。

我的過程有適當的隔離級別,所以我不明白它爲什麼仍然超時。 想法?

這裏是我的GET PROC看起來像:

CREATE PROCEDURE dbo.MyGetProc(...) 

AS BEGIN SET事務隔離級別讀取未提交; 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

+1

你能發佈一段代碼超時嗎?這樣你會得到更強的答案。 – 2014-10-01 15:36:20

+0

我在原始線程中添加了proc代碼片段 – GreenBinary 2014-10-01 15:46:31

回答

1

使用

SELECT * FROM表1與(NOLOCK)

讀取COMMITED數據。

+0

我嘗試使用WITH(NOLOCK)&SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;同時和分開。但仍然是同樣的問題。 – GreenBinary 2014-10-01 15:59:41