fn_get_sql(Transact-SQL)

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

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

ms189451.note(ko-kr,SQL.90).gif중요:
Microsoft SQL Server의 이후 버전에서는 이 기능이 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 말고, 현재 이 기능을 사용하는 응용 프로그램은 수정하십시오. sys.dm_exec_sql_text를 대신 사용하십시오. 자세한 내용은 sys.dm_exec_sql_text를 참조하십시오.

구문

fn_get_sql ( SqlHandle )

인수

SqlHandle

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

반환된 테이블

열 이름 데이터 형식 설명

dbid

smallint

데이터베이스 ID입니다. 임시 SQL 문의 경우 NULL입니다.

objectid

int

데이터베이스 개체의 ID입니다. 임시 SQL 문의 경우 NULL입니다.

number

smallint

프로시저가 그룹화된 경우 그룹의 번호를 나타냅니다.

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

NULL = 임시 SQL 문입니다.

encrypted

bit

개체가 암호화되었는지 여부를 나타냅니다.

0 = 암호화되지 않음

1 = 암호화됨

text

text

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

주의

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

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

Microsoft SQL Server 2005 데이터베이스 엔진 은 대량 복사 문과 문자열 리터럴이 8KB를 초과하는 문 등의 일부 Transact-SQL 문을 캐시하지 못합니다. 이러한 문에 대한 핸들은 fn_get_sql을 사용하여 검색할 수 없습니다.

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

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

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

사용 권한

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

데이터베이스 관리자는 다음 예에서처럼 fn_get_sql 함수를 사용하여 문제점 진단 프로세스에 도움을 줄 수 있습니다. 관리자는 문제점 session_id를 식별한 후에 해당 session_id에 대한 SQL 핸들을 검색하고 해당 핸들을 사용하여 fn_get_sql 함수를 호출하고 시작 및 종료 오프셋을 사용하여 문제점 session_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 ::fn_get_sql(@Handle);
GO

참고 항목

참조

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

도움말 및 정보

SQL Server 2005 지원 받기