sp_recompile(Transact-SQL)

저장 프로시저 및 트리거가 다음에 실행될 때 다시 컴파일되게 합니다. 프로시저나 트리거가 다음에 실행될 때 기존 계획을 프로시저 캐시에서 삭제하고 새 계획이 생성되도록 하여 이 작업을 수행합니다. SQL Server Profiler 컬렉션에서는 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 AdventureWorks;
GO
EXEC sp_recompile N'Sales.Customer';
GO