2014-03-06 3 views
0

2 개의 테이블이있는 SQL Server 2008 데이터베이스가 있습니다. 나는 관리 Studio에서 다음 쿼리를 실행 해요 :이 쿼리를 실행하면SQL Server - 동일한 쿼리, 동일한 데이터베이스, 다른 결과

select M.FD_BROWSER_SHORT_NAME AS X, Count(1) AS Y 
from TB_EVENTS E 
    INNER JOIN TB_MACHINES M ON E.FD_ID = M.FD_ID AND E.FD_ID_NET = M.FD_ID_NET 
where E.FD_EVENT_CODE = 30   
group by M.FD_BROWSER_SHORT_NAME 
having Count(1) > 10 

는, 결과는 다음과 같습니다

다음
X Y 
OP 23 
CR 1809 
IE 5392 
MZ 1000 

나는 (동일한 데이터베이스에 다시 쿼리 (F5)을 실행 같은 세션). 에 대한 결과 변경 :

X Y 
OP 1023 
CR 1809 
IE 5392 

나는 다시 정상으로 다시 쿼리 결과를 실행하면 :

같은 서버에서
X Y 
OP 23 
CR 1809 
IE 5392 
MZ 1000 

, 같은 시간에, 나는 (삽입 데이터베이스를 변경하는 C# 응용 프로그램을 및 UPDATE). 이 응용 프로그램을 중지하면 문제가 중지됩니다.

먼저 문제는 잠금과 관련이 있다고 생각했습니다. 그런 다음 SQL 문 앞에 다음을 추가하려고했습니다.

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE 

그러나 문제는 계속 발생합니다.

다른 서버에서 문제를 재현하려고했으나 발생하지 않았습니다. 다른 서버와 SQL Server의 다른 버전으로 데이터베이스를 마이그레이션하려고 시도했지만 여전히 발생합니다.

이 문제는 집계 함수가 포함 된 다른 쿼리에서 발생합니다.

또한 통계를 업데이트하고 모든 인덱스를 다시 작성하려고했습니다. 아무것도 ...

아이디어가 있으십니까?

답변

0

아마도 거래를 설정하기 전에 C# 앱이 잠겨있을 수 있습니다. 커밋되지 않은 읽기를 시도하고 표시된 내용을 확인하십시오.

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 
관련 문제