sp_recompile(Transact-SQL)

저장 프로시저, 트리거 및 사용자 정의 함수가 다음에 실행될 때 다시 컴파일되게 합니다. 프로시저나 트리거가 다음에 실행될 때 기존 계획을 프로시저 캐시에서 삭제하고 새 계획이 생성되도록 하여 이 작업을 수행합니다. SQL Server 프로파일러 컬렉션에서는 SP:Recompile 이벤트 대신 SP:CacheInsert 이벤트가 로깅됩니다.

항목 링크 아이콘 Transact-SQL 구문 표기 규칙

구문

sp_recompile [ @objname = ] 'object'

인수

  • [ @objname= ] 'object'
    현재 데이터베이스에 있는 저장 프로시저, 트리거, 테이블, 뷰 또는 사용자 정의 함수의 정규화된 이름 또는 정규화되지 않은 이름입니다. object는 nvarchar(776)이며 기본값은 없습니다. object 가 저장 프로시저, 트리거 또는 사용자 정의 함수의 이름인 경우 다음 실행 시에 해당 저장 프로시저, 트리거 또는 함수가 다시 컴파일됩니다. object가 테이블 또는 뷰의 이름인 경우 해당 테이블 또는 뷰를 참조하는 모든 저장 프로시저, 트리거 또는 사용자 정의 함수는 다음 실행 시에 다시 컴파일됩니다.

반환 코드 값

0(성공) 또는 0이 아닌 수(실패)

주의

sp_recompile은 현재 데이터베이스에서만 개체를 찾습니다.

저장 프로시저, 트리거 및 사용자 정의 함수에 사용되는 쿼리는 컴파일되는 경우에만 최적화됩니다. 데이터베이스에 통계에 영향을 주는 인덱스 또는 다른 변경 내용이 생기면 컴파일된 저장 프로시저, 트리거 및 사용자 정의 함수가 효율성을 잃을 수도 있습니다. 테이블에서 사용되는 저장 프로시저, 트리거 및 사용자 정의 함수를 다시 컴파일하면 쿼리를 다시 최적화할 수 있습니다.

[!참고]

SQL Server는 자동으로 저장 프로시저, 트리거 및 사용자 정의 함수를 다시 컴파일하는 편이 좋은 경우 그렇게 합니다.

사용 권한

지정된 개체에 대한 ALTER 권한이 필요합니다.

다음 예제에서는 Customer 테이블에 대해 수행되는 저장 프로시저, 트리거 및 사용자 정의 함수가 다음에 실행될 때 다시 컴파일되도록 합니다.

USE AdventureWorks2012;
GO
EXEC sp_recompile N'Sales.Customer';
GO

참고 항목

참조

CREATE PROCEDURE(Transact-SQL)

CREATE TRIGGER(Transact-SQL)

시스템 저장 프로시저(Transact-SQL)