sys.dm_exec_sql_text
업데이트: 2006년 12월 12일
지정된 sql_handle로 확인된 SQL 일괄 처리의 텍스트를 반환합니다. 이 테이블 값 함수는 시스템 함수 fn_get_sql을 대체합니다.
구문
sys.dm_exec_sql_text(sql_handle)
인수
sql_handle
조회할 일괄 처리의 SQL 핸들입니다. sql_handle은 **varbinary(64)**입니다. sql_handle은 다음 동적 관리 개체에서 얻을 수 있습니다.- sys.dm_exec_query_stats
- sys.dm_exec_requests
- sys.dm_exec_cursors
- sys.dm_exec_xml_handles
- sys.dm_exec_query_memory_grants
반환된 테이블
열 이름 | 데이터 형식 | 설명 |
---|---|---|
dbid |
smallint |
데이터베이스의 ID입니다. 임시 및 준비된 SQL 문의 경우 NULL입니다. |
objectid |
int |
개체의 ID입니다. 임시 및 준비된 SQL 문의 경우 NULL입니다. |
number |
smallint |
번호가 있는 저장 프로시저의 경우 저장 프로시저의 번호가 이 열에 반환됩니다. 자세한 내용은 sys.numbered_procedures(Transact-SQL)를 참조하십시오. 임시 및 준비된 SQL 문의 경우 NULL입니다. |
encrypted |
bit |
1 = SQL 텍스트가 암호화됩니다. 0 = SQL 텍스트가 암호화되지 않습니다. |
text |
nvarchar(max) |
SQL 쿼리의 텍스트입니다. 암호화된 개체의 경우 NULL입니다. |
주의
일괄 처리용 SQL 핸들은 SQL 텍스트 기반의 해시 값입니다. 저장 프로시저, 트리거, 함수 등의 데이터베이스 개체용 SQL 핸들은 데이터베이스 ID, 개체 ID 및 개체 번호에서 파생됩니다.
사용 권한
서버에 대한 VIEW SERVER STATE 권한이 필요합니다.
예
1. 평균 CPU 시간별 상위 5개 쿼리에 대한 정보 얻기
다음 예에서는 상위 5개 쿼리에 대한 SQL 문 텍스트와 평균 CPU 시간을 반환합니다.
SELECT TOP 5 total_worker_time/execution_count AS [Avg CPU Time],
SUBSTRING(st.text, (qs.statement_start_offset/2)+1,
((CASE qs.statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE qs.statement_end_offset
END - qs.statement_start_offset)/2) + 1) AS statement_text
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st
ORDER BY total_worker_time/execution_count DESC;
2. 일괄 처리 실행 통계 제공
다음 예에서는 일괄 처리에서 실행되는 SQL 쿼리 텍스트를 반환하고 이에 대한 통계 정보를 제공합니다.
SELECT s2.dbid,
s1.sql_handle,
(SELECT TOP 1 SUBSTRING(s2.text,statement_start_offset / 2+1 ,
( (CASE WHEN statement_end_offset = -1
THEN (LEN(CONVERT(nvarchar(max),s2.text)) * 2)
ELSE statement_end_offset END) - statement_start_offset) / 2+1)) AS sql_statement,
execution_count,
plan_generation_num,
last_execution_time,
total_worker_time,
last_worker_time,
min_worker_time,
max_worker_time,
total_physical_reads,
last_physical_reads,
min_physical_reads,
max_physical_reads,
total_logical_writes,
last_logical_writes,
min_logical_writes,
max_logical_writes
FROM sys.dm_exec_query_stats AS s1
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS s2
WHERE s2.objectid is null
ORDER BY s1.sql_handle, s1.statement_start_offset, s1.statement_end_offset;
참고 항목
참조
동적 관리 뷰 및 함수
실행 관련 동적 관리 뷰 및 함수
sys.dm_exec_query_stats
sys.dm_exec_requests
sys.dm_exec_cursors
sys.dm_exec_xml_handles
sys.dm_exec_query_memory_grants
도움말 및 정보
변경 내역
릴리스 | 내역 |
---|---|
2006년 12월 12일 |
|
2006년 4월 14일 |
|
2005년 12월 5일 |
|