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

도움말 및 정보

SQL Server 2005 지원 받기

변경 내역

릴리스 내역

2006년 12월 12일

변경된 내용
  • sql_handle의 설명을 업데이트했습니다.
  • dbid, objectidnumber 열에서 준비된 문이 NULL을 반환한다는 정보를 추가했습니다.

2006년 4월 14일

변경된 내용
  • 반환되는 열에 대한 설명에 Null 값 정의를 포함하도록 업데이트했습니다.
  • 예를 수정했습니다.

2005년 12월 5일

변경된 내용
  • text 필드의 데이터 형식을 text에서 nvarchar(max)로 변경했습니다.