Compartir a través de


sys.fn_stmt_sql_handle_from_sql_stmt (Transact-SQL)

Aplica a: SQL Server 2016 (13.x) y versiones posteriores Azure SQL DatabaseAzure SQL Managed InstanceSQL database in Microsoft Fabric

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

Convenciones de sintaxis de Transact-SQL

Sintaxis

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

Argumentos

query_sql_text

Texto de la consulta en el Almacén de consultas del que desea controlar. query_sql_text es nvarchar(max) sin valor predeterminado.

query_param_type

Tipo de parámetro de la consulta. query_param_type es tinyint, con un valor predeterminado de NULL. Los valores posibles son:

Importancia Descripción
NULL (valor predeterminado) De manera predeterminada, su valor es 0.
0 Ninguno
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 (erróneo).

Permisos

Requiere EXECUTE permiso en la base de datos y DELETE el permiso 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
     INNER JOIN sys.query_store_query AS q
         ON qt.query_text_id = q.query_text_id
CROSS APPLY sys.fn_stmt_sql_handle_from_sql_stmt(qt.query_sql_text, NULL) AS fn_handle_from_stmt
     INNER JOIN sys.dm_exec_query_stats AS qs
         ON fn_handle_from_stmt.statement_sql_handle = qs.statement_sql_handle;