sys.fn_stmt_sql_handle_from_sql_stmt (Transact-SQL)

Se aplica a: SQL Server 2016 (13.x) y versiones posteriores Azure SQL DatabaseAzure SQL Managed Instance

Obtiene el stmt_sql_handle de una instrucción Transact-SQL bajo el tipo de parametrización especificado (simple o forzado). Esto le permite hacer referencia a las consultas almacenadas en el Almacén de consultas mediante su stmt_sql_handle cuando conoce su texto.

Convenciones de sintaxis de Transact-SQL

Sintaxis

sys.fn_stmt_sql_handle_from_sql_stmt
(
    'query_sql_text' ,
    [ query_param_type
) [;]

Argumentos

query_sql_text
Es el texto de la consulta en el almacén de consultas del que desea controlar. query_sql_text es nvarchar(max), sin ningún valor predeterminado.

query_param_type
Es el tipo de parámetro de la consulta. query_param_type es un minúsculo. Los valores posibles son:

  • NULL: el valor predeterminado es 0.

  • 0 - Ninguna

  • 1 - Usuario

  • 2 - Simple

  • 3 - Forzado

Columnas devueltas

En la tabla siguiente se enumeran las columnas que sys.fn_stmt_sql_handle_from_sql_stmt devuelven.

Nombre de la columna Tipo Descripción
statement_sql_handle varbinary(64) Identificador SQL.
query_sql_text nvarchar(max) Texto de la instrucción Transact-SQL.
query_parameterization_type tinyint Tipo de parametrización de consulta.

Valores de código de retorno

0 (correcto) o 1 (error)

Comentarios

Permisos

Requiere el permiso EXECUTE en la base de datos y el permiso DELETE en las vistas de catálogo del almacén de consultas.

Ejemplos

En el ejemplo siguiente se ejecuta una instrucción y, a continuación, se usa sys.fn_stmt_sql_handle_from_sql_stmt para devolver el identificador SQL de esa instrucción.

SELECT * FROM sys.databases;
SELECT * FROM sys.fn_stmt_sql_handle_from_sql_stmt('SELECT * FROM sys.databases', NULL);

Use la función para correlacionar Almacén de consultas datos con otras vistas de administración dinámica. En el ejemplo siguiente:

SELECT qt.query_text_id, q.query_id, qt.query_sql_text, qt.statement_sql_handle,
q.context_settings_id, qs.statement_context_id
FROM sys.query_store_query_text AS qt
JOIN sys.query_store_query AS q
    ON qt.query_text_id = q.query_id
CROSS APPLY sys.fn_stmt_sql_handle_from_sql_stmt (qt.query_sql_text, null) AS fn_handle_from_stmt
JOIN sys.dm_exec_query_stats AS qs
    ON fn_handle_from_stmt.statement_sql_handle = qs.statement_sql_handle;

Consulte también