지연된 이름 확인 및 컴파일

저장 프로시저를 만들 때 프로시저의 문을 구문 분석하여 구문이 정확한지 확인합니다. 프로시저 정의에 구문 오류가 있으면 오류가 반환되고 저장 프로시저가 만들어지지 않습니다. 구문이 정확하지 않으면 저장 프로시저의 텍스트가 sys.sql_modules 카탈로그 뷰에 저장됩니다.

저장 프로시저가 처음 실행될 때 쿼리 처리기는 sys.sql_modules 카탈로그 뷰에서 저장 프로시저의 텍스트를 읽고 프로시저가 사용하는 개체 이름이 있는지 확인합니다. 저장 프로시저가 참조하는 테이블 개체는 저장 프로시저가 만들어질 때가 아니라 실행될 때만 존재하면 되므로 이 프로세스를 지연된 이름 확인이라고 합니다.

[!참고] 지연된 이름 확인은 존재하지 않는 테이블 개체를 참조할 때만 사용할 수 있습니다. 다른 모든 개체는 저장 프로시저를 만들 때 존재해야 합니다. 예를 들어 저장 프로시저에 있는 기존 테이블을 참조할 때는 해당 테이블에 대해 존재하지 않는 열을 나열할 수 없습니다.

확인 단계에서 Microsoft SQL Server 2005는 변수가 열 데이터 형식에 맞는지 검사하는 등의 다른 유효성 검사 작업도 수행합니다. 저장 프로시저를 실행할 때 저장 프로시저에서 참조한 개체가 없는 경우 저장 프로시저는 이 개체를 참조하는 문에 도달할 때 실행이 중지됩니다. 이런 경우 또는 이름 확인 단계에서 다른 오류가 발견되는 경우 오류를 반환합니다.

[!참고] 저장 프로시저가 참조하는 개체를 삭제하거나 해당 개체의 이름을 바꾸면 저장 프로시저가 실행될 때 오류가 반환됩니다. 그러나 저장 프로시저에서 참조하는 개체를 같은 이름의 개체로 바꾼 경우에는 저장 프로시저를 다시 만들지 않고 실행할 수 있습니다. 예를 들어 저장 프로시저 Proc1이 테이블 Test1을 참조하는데 Test1이 삭제되고 Test1이라고 하는 다른 테이블이 만들어지면 Proc1이 새 테이블을 참조합니다. 이 경우 저장 프로시저를 다시 만들지 않아도 됩니다.

프로시저 실행이 확인 단계를 성공적으로 마치면 Microsoft SQL Server의 쿼리 최적화 프로그램이 저장 프로시저의 Transact-SQL 문을 분석하고 실행 계획을 만듭니다. 실행 계획에는 다음과 같은 정보를 기초로 저장 프로시저를 가장 빨리 실행할 수 있는 방법이 설명되어 있습니다.

  • 테이블에 있는 데이터의 양
  • 테이블에 있는 인덱스의 특성 및 존재 여부와 인덱싱된 열에서의 데이터 배포
  • WHERE 절 조건에서 사용하는 비교 연산자 및 비교 값
  • 조인과 UNION, GROUP BY 및 ORDER BY 키워드 존재 여부

쿼리 최적화 프로그램은 저장 프로시저에서 위에 나열된 정보를 분석한 후에 실행 계획을 메모리에 배치합니다. 저장 프로시저를 분석하고 실행 계획을 만드는 과정을 컴파일이라고 합니다. 최적화된 메모리 내 실행 계획을 사용하여 쿼리를 실행합니다. 실행 계획은 SQL Server가 다시 시작되거나 다른 개체를 저장하기 위한 공간이 필요할 때까지 메모리에 남아 있습니다.

저장 프로시저가 다음에 실행될 때 SQL Server는 메모리에 있는 기존의 실행 계획을 다시 사용합니다. 메모리에 실행 계획이 없으면 새 실행 계획을 만듭니다.

참고 항목

개념

저장 프로시저 실행(데이터베이스 엔진)
저장 프로시저 만들기(데이터베이스 엔진)
CLR 저장 프로시저 만들기
저장 프로시저 수정
저장 프로시저 다시 컴파일
저장 프로시저 보기
저장 프로시저 삭제

관련 자료

CREATE PROCEDURE(Transact-SQL)
sys.sql_modules(Transact-SQL)

도움말 및 정보

SQL Server 2005 지원 받기