sys.fn_get_sql(Transact-SQL)

적용 대상:SQL Server

지정된 SQL 핸들에 대한 SQL 문의 텍스트를 반환합니다.

Important

Microsoft SQL Server의 이후 버전에서는 이 기능이 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 않도록 하고, 현재 이 기능을 사용하는 애플리케이션은 수정하세요. 대신 sys.dm_exec_sql_text 사용합니다. 자세한 내용은 sys.dm_exec_sql_text(Transact-SQL)를 참조 하세요.

Transact-SQL 구문 표기 규칙

구문

  
sys.fn_get_sql ( SqlHandle )  

인수

SqlHandle
핸들 값입니다. SqlHandle은 기본값이 없는 varbinary(64)입니다.

반환된 테이블

열 이름 데이터 형식 설명
dbid smallint 데이터베이스 ID입니다. 임시 및 준비된 SQL 문의 경우 문이 컴파일된 데이터베이스의 ID입니다.
objectid int 데이터베이스 개체의 ID입니다. 임시 SQL 문의 경우 NULL입니다.
번호 smallint 프로시저가 그룹화된 경우 그룹의 번호를 나타냅니다.

0 = 항목이 프로시저가 아닙니다.

NULL = 임시 SQL 문입니다.
암호화됩니다. bit 개체가 암호화되었는지 여부를 나타냅니다.

0 = 암호화되지 않음

1 = 암호화됨
text text SQL 문의 텍스트입니다. 암호화된 개체의 경우 NULL입니다.

설명

sys.dm_exec_requests(Transact-SQL) 동적 관리 뷰의 sql_handle 열에서 유효한 SQL 핸들을 가져올 수 있습니다.

캐시에 더 이상 존재하지 않는 핸들을 전달하면 fn_get_sql 은 빈 결과 집합을 반환합니다. 유효하지 않은 핸들을 전달하면 일괄 처리가 중지되고 오류 메시지가 반환됩니다.

SQL Server 데이터베이스 엔진은 8KB보다 큰 문자열 리터럴이 있는 대량 복사 문 및 문과 같은 일부 Transact-SQL 문을 캐시할 수 없습니다. 이러한 문에 대한 핸들은 fn_get_sql을 사용하여 검색할 수 없습니다.

결과 집합의 텍스트 열은 암호를 포함할 수 있는 텍스트에 대해 필터링됩니다. 모니터링되지 않는 보안 관련 저장 프로시저에 대한 자세한 내용은 추적 필터링을 참조하세요.

fn_get_sql 함수는 DBCC INPUTBUFFER 명령과 유사한 정보를 반환합니다. 다음은 DBCC INPUTBUFFER를 사용할 수 없기 때문에 fn_get_sql 함수를 사용할 수 있는 경우의 예입니다.

  • 이벤트에 255자 이상이 있는 경우

  • 저장 프로시저의 가장 높은 현재 중첩 수준을 반환해야 하는 경우 예를 들어 sp_1 sp_2 두 개의 저장 프로시저가 있습니다. sp_1 sp_2 호출하고 sp_2 실행되는 동안 sys.dm_exec_requests 동적 관리 뷰에서 핸들을 가져오는 경우 fn_get_sql 함수는 sp_2 대한 정보를 반환합니다. 또한 fn_get_sql 함수는 가장 높은 현재 중첩 수준에 있는 저장 프로시저의 완전한 텍스트를 반환합니다.

사용 권한

서버에 대한 VIEW SERVER STATE 권한이 있어야 합니다.

데이터베이스 관리자는 다음 예제와 같이 fn_get_sql 함수를 사용하여 문제 프로세스를 진단할 수 있습니다. 관리자가 문제 세션 ID를 식별한 후 관리자는 해당 세션에 대한 SQL 핸들을 검색하고 핸들로 fn_get_sql 호출한 다음 시작 및 끝 오프셋을 사용하여 문제 세션 ID의 SQL 텍스트를 확인할 수 있습니다.

DECLARE @Handle varbinary(64);  
SELECT @Handle = sql_handle   
FROM sys.dm_exec_requests   
WHERE session_id = 52 and request_id = 0;  
SELECT * FROM sys.fn_get_sql(@Handle);  
GO  

참고 항목

DBCC INPUTBUFFER(Transact-SQL)
sys.sysprocesses(Transact-SQL)
sys.dm_exec_requests(Transact-SQL)