SQL Version에 따른 sp_prepare 정보 반환
- Version : SQL Server 2008R2, 2012
SQL Server의 시스템 저장 프로시저인 sp_prepare는 매개 변수가 있는 T-SQL문을 준비하고 실행을 위해 핸들을 반환하는 기능을 한다. SQL Server Version에 따라 반환되는 정보가 어떻게 다른지 알아 보자.
[단일 문 일괄처리에 대한 메타데이터 반환]
아래 표는 sp_prepare 문을 포함하는 일괄 처리에 대한 메타데이터를 반환 여부를 나타낸다.
- SQL Server 2012 이전 버전에서도 사용자에게 sp_prepare 메타데이터를 반환한다. 이것은 내부적으로 FMTONLY ON 문을 설정하고 실행하여 구현되었다.
- 클라이언트 버전 2012 이상이면 SQL 2012 RTM 및 SP1에서 sp_prepare는 메타데이터를 반환하지 않는다. FMTONLY ON이 설정되지 않으며 이전 호환성 (클라이언트 2008) 클라이언트에만 사용된다.
- 일괄 처리가 하나의 문이 포함되어 있는 경우 SQL 2012 CU6(Build 11.0.2401.0) 및 SP1 CU3 이상에서는 사용자에게 메타데이터를 반환한다. (성능 문제의 핫픽스 참고 : http://support.microsoft.com/kb/2772525)
[다중 문 일괄처리에 대한 메타데이터 반환]
declare @p1 int
set @p1=NULL
exec sp_prepare @p1 output,NULL,N'select * from sys.objects; select 1;',1
select @p1 |
아래 표는 다중 문 일괄처리에 대한 메타데이터 반환 여부를 나타낸다.
[참고자료]
http://blogs.msdn.com/b/psssql/archive/2013/07/23/when-does-sp-prepare-return-metadata.aspx
http://support.microsoft.com/kb/2772525
http://msdn.microsoft.com/ko-kr/library/ff848808.aspx
2013-07-26 / 강성욱 / http://sqlmvp.kr
'SQL Server > SQL Server Tip' 카테고리의 다른 글
Tempdb 경합 확인 및 해결 (Tempdb Contention) (0) | 2015.07.22 |
---|---|
SQL Server IO 병목 확인과 오해 (0) | 2015.07.22 |
DReplay 활성 세션 초과 에러 (0) | 2015.07.22 |
저장 프로시저 내 임시 테이블 사용과 프로시저 재컴파일 (1) | 2015.07.22 |
NUMA 노드와 추척플래그 8048 (0) | 2015.07.22 |