증상
다음과 같은 경우를 생각해 볼 수 있습니다.
-
Microsoft SQL Server 2014 또는 SQL Server 2012에서 프로시저를 실행 합니다.
-
이 프로시저에는 다음과 같은 조건을 가진 쿼리가 포함 됩니다.
-
자주 업데이트 되는 테이블을 조인 합니다.
-
매개 변수를 포함 하는 WHERE 절이 있습니다.
-
옵션 (재컴파일)을 사용 합니다.
-
-
이 절차는 서로 다른 매개 변수 값 집합을 갖는 여러 동시 연결에서 실행 됩니다.
-
서버는 이러한 각 절차가 평소 보다 더 많은 시간을 초래 하는 과도 한 부하가 적용 됩니다.
이 시나리오에서는 쿼리 컴파일 끝과 연결의 쿼리 실행 시작 사이에 발생 하는 시간 간격 동안 다음 추가 조건을 충족 하는 경우 연결에 대해 실행 되는 프로시저에서 잘못 된 결과가 나타날 수 있습니다.
-
조건 1: 다른 동시 연결에서는 연결 된 테이블에 대 한 업데이트를 수행 하 고, 조인 된 쿼리의 다른 재컴파일 작업을 트리거할 수 있습니다.
-
조건 2: 다른 연결에서 동일한 쿼리를 다시 컴파일한 다음 캐시에 넣습니다.
중요 이 타이밍 문제는 매우 드뭅니다.
원인
이 문제는 연결에서 쿼리를 실행 한 후 쿼리의 매개 변수 값이 잘못 된 값으로 변경 되었기 때문에 발생 합니다. 이는 동시 컴파일 간에 발생 하는 매우 드문 타이밍 문제 때문입니다.
해결 방법
이 문제는 다음 SQL Server 누적 업데이트에서 처음 수정 되었습니다.
SQL Server 2014 누적 업데이트 4 /en-us/help/2999197
SQL Server 2012 SP2에 대 한 누적 업데이트 2 /en-us/help/2983175
SQL Server 2012 SP1 용 누적 업데이트 11 /en-us/help/2975396
각각의 새로운 새 누적 업데이트에는 이전 누적 업데이트에 포함 된 모든 핫픽스와 모든 보안 수정 사항이 포함 되어 있습니다. SQL Server에 대 한 최신 누적 업데이트를 확인 하세요.
상태
Microsoft는 "적용 대상" 절에 나열한 제품에서 이 문제를 확인했습니다.