2014-10-01 3 views
0

SQL 작업을 통해 요청 큐를 처리 할 수 ​​있습니다. Table1을 업데이트합니다. 그것은 15 분 정도 걸리는 긴 과정입니다.SQL Locking - Timeout issue

한편 내 응용 프로그램은 Table1에서 레코드를 읽고 그리드에 표시하려고합니다. 해당 get proc는 tran isolation level을 uncommited로 설정했습니다. SQL 작업이 실행 중일 때 그리드를 채우는 동안 내 응용 프로그램은 항상 시간 초과됩니다. SQL 작업이 실행되고 있지 않으면 정상적으로 작동합니다.

내 proc에는 적절한 격리 수준이 있으므로 시간이 너무 오래 걸리는 이유가 없습니다. 생각 하시겠습니까? 여기

처럼 내 가져 오기 시저는 모습입니다 :

CREATE PROCEDURE dbo.MyGetProc(...) 

AS가 SET 트랜잭션 격리 수준이 커밋되지 않은 읽기 BEGIN; 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 커밋 데이터를 판독한다 (NOLOCK)

와 표에서

+1

타임 아웃 코드의 스 니펫을 게시 할 수 있습니까? 이런 식으로 훨씬 더 강한 답을 얻을 수 있습니다. –

+0

원본 스레드에 get proc code snippet을 추가했습니다. – GreenBinary

답변

1

사용

선택 *.

+0

WITH (NOLOCK) & SET TRANSACTION ISOLATION LEVEL을 사용하여 보았습니다. UNCOMMITTED; 모두 한 번에. 그러나 여전히 같은 문제입니다. – GreenBinary