FIX: 모든 문 실행 대상 재컴파일합니다 있는 저장된 프로시저 동시 실행 실패할 수 있다

기술 자료 번역 기술 자료 번역
기술 자료: 250506 - 이 문서가 적용되는 제품 보기.
이 문서가 보관되었습니다. "그대로" 제공되었으며, 업데이트가 되지 않을 것입니다.
# 버그: 55251 (sqlbug_70)
모두 확대 | 모두 축소

현상

다음 조건이 충족될 경우 그 안에 포함된 모든 명령문을 실행하기 위해 저장된 프로시저를 자동으로 실패할 수 있습니다.

  • 여러 개의 연결이 같은 프로시저를 동시에 실행하고 있습니다.

  • 이 프로시저 외부에서 만든 임시 테이블에 대한 참조를 이루어집니다.

  • 또한 잠재적으로 '자동 업데이트 통계' 에 의해 트리거되는 재컴파일 일으킬 수 있는 하나 이상의 문이 이 임시 테이블에 대한 참조를 따릅니다.
모든 문은 일부 다른 실패할 동안, 프로시저를 실행하는 사용자가 실행할 수 있습니다.

해결 과정

WITH RECOMPILE 절은 프로시저에 만들거나 프로시저를 실행할 때 WITH RECOMPILE 절은 사용하십시오.

현재 상태

Microsoft는 이 SQL Server 7 .0의 문제를 확인했습니다. 이 문제는 Microsoft SQL Server 7 .0의 미국 서비스 팩 2에서 수정되었습니다. 추가 정보는 다음 문서 번호를 클릭하여 Microsoft 기술 자료에서 확인하십시오:
254561INF: Microsoft SQL Server 7.0 및 Microsoft 데이터 엔진 (MSDE) 1.0 서비스 팩 2를 구하는 방법
자세한 내용은 주 지원 공급자에게 문의하십시오.

추가 정보

현재 프로시저 외부에서 만든 임시 테이블에 대한 참조를 만들 경우, 프로시저가 처음 실행될 때 문과 모든 후속 문을 컴파일할 수 없습니다 것을. 테이블의 스키마에 대한 정보가 알려져 있기 때문입니다. 해당 문이 실행을 도달하고 스키마 및 카디널리티 값을 사용할 수 있는 후에는 이 정보를 사용하여 해당 프로시저가 재컴파일됩니다. 컴파일 시간을 최소화하기 위해 SQL Server는 "부분 컴파일"이 상황에서 수행하며 경우에만 이 개까지 문에 대한 쿼리 계획을 생성합니다.

컴파일된 계획을 여러 사용자가 공유할 수 있으므로 SQL Server 7.0 재컴파일을 연결 중 하나를 수행할 수 있도록 재컴파일을 serialize합니다. 또한 다른 연결을 다시 컴파일해야 하는 경우 해당 재컴파일 후 그 다음 단계 실행을 다시 첫 번째 연결을 기다립니다.

여기서 두 개의 연결이 실행 중 여러 단계에서 있으며 재컴파일을 트리거하는 한 먼저 프로시저 외부에서 만든 임시 테이블 참조하기 전에 상황이 발생할 경우, 해당 문을 도달하면 계획을 컴파일하는 중지됩니다. 두 번째 연결 어딘가에 후에 이 첫 번째 연결을 컴파일하는 동안 수도 있는 재컴파일 트리거하는 경우 실행이 재개됩니다 및 잘못 이를 모든 문은 계획에서 실행된 것을 믿습니다.

WITH RECOMPILE 사용하는 경우 프로시저가 만들어질 때 또는 실행할 때 두 연결 절대로 같은 컴파일된 계획을 공유하고 절대로 이 조건이 있을 수 있습니다.

가능하면 좋습니다 프로시저의 재컴파일 항상 있어야 하므로 현재 프로시저 외부에서 만들어진 임시 테이블을 참조할 수 있습니다. 다른 저장된 프로시저에 대한 프로그래밍 방법은 아래에서 "Transact-SQL 팁" 항목에서는 SQL 온라인 찾을 수 있습니다.

때 프로시저가 재컴파일됩니다 중인 확인하려면 SQL 프로파일러 SP:Recompile 이벤트를 조사할 수 있습니다.

속성

기술 자료: 250506 - 마지막 검토: 2014년 2월 14일 금요일 - 수정: 2.0
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft SQL Server 7.0 Standard Edition
키워드:?
kbnosurvey kbarchive kbmt kbbug kbfix KB250506 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com