Exportar (0) Imprimir
Expandir todo

sys.dm_exec_sql_text

Actualizado: abril de 2011

Este tema está OBSOLETO. Encontrará la versión más actual en Referencia de SQL 14 Transact-SQL.

ImportantImportante
Este tema no se mantiene. Para la versión actual, vea sys.dm_exec_sql_text.

Devuelve el texto del lote SQL que se identifica mediante el valor sql_handle especificado. Esta función con valores de tabla reemplaza a la función del sistema fn_get_sql.


sys.dm_exec_sql_text(sql_handle | plan_handle)

sql_handle
Es el identificador SQL del lote que se va a buscar. sql_handle es de tipo varbinary(64). sql_handle se puede obtener de los siguientes objetos de administración dinámica:

  • sys.dm_exec_query_stats

  • sys.dm_exec_requests

  • sys.dm_exec_cursors

  • sys.dm_exec_xml_handles

  • sys.dm_exec_query_memory_grants

  • sys.dm_exec_connections

plan_handle
Es el identificador del plan de consulta.

Para obtener más información, vea sys.dm_exec_text_query_plan.

 

Nombre de la columna Tipo de datos Descripción

dbid

smallint

Identificador de la base de datos.

En el caso de instrucciones SQL ad hoc y preparadas, identificador de la base de datos en la que se compilaron las instrucciones.

objectid

int

Identificador del objeto.

Este valor es NULL para las instrucciones SQL ad hoc y preparadas.

number

smallint

En un procedimiento almacenado numerado, esta columna devuelve el número del procedimiento almacenado. Para obtener más información, vea sys.dm_exec_query_memory_grants.

Este valor es NULL para las instrucciones SQL ad hoc y preparadas.

encrypted

bit

1 = El texto SQL está cifrado.

0 = El texto SQL no está cifrado.

text

nvarchar(max )

Texto de la consulta de SQL.

Este valor es NULL para objetos cifrados.

Requiere el permiso VIEW SERVER STATE en el servidor.

En lotes, los identificadores de SQL son valores de hash basados en el texto SQL. Para los objetos de base de datos, como procedimientos almacenados, desencadenadores o funciones, los identificadores SQL se derivan del identificador de base de datos, del identificador de objeto y del número de objeto. plan_handle es un valor hash derivado del plan compilado del lote completo.

El ejemplo siguiente devuelve el texto de la instrucción SQL y el promedio de tiempo de CPU de las cinco mejores consultas.

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;

El ejemplo siguiente devuelve el texto de consultas SQL que se están ejecutando por lotes y proporciona información estadística sobre ellas.

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;

Mostrar:
© 2014 Microsoft