Compartilhar via


sys.fn_stmt_sql_handle_from_sql_stmt (Transact-SQL)

Aplica-se a: SQL Server 2016 (13.x) e versões posteriores Azure SQL DatabaseAzure SQL Managed InstanceSQL database in Microsoft Fabric

Obtém a stmt_sql_handle instrução for a Transact-SQL no tipo de parametrização fornecido (simples ou forçado). Você pode consultar as consultas armazenadas no Repositório de Consultas usando o texto delas stmt_sql_handle quando souber.

Convenções de sintaxe de Transact-SQL

Sintaxe

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

Argumentos

query_sql_text

O texto da consulta no Repositório de Consultas do qual você deseja o identificador. query_sql_text é nvarchar(max) sem padrão.

query_param_type

O tipo de parâmetro da consulta. query_param_type é minúsculo, com um padrão de NULL. Os valores possíveis são:

Value Descrição
NULL (padrão) Usa como padrão 0
0 None
1 Utilizador
2 Simple
3 Forçado

Colunas retornadas

A tabela a seguir lista as colunas retornadas sys.fn_stmt_sql_handle_from_sql_stmt .

Nome da coluna Tipo Descrição
statement_sql_handle varbinary(64) O identificador SQL.
query_sql_text nvarchar(max) O texto da instrução Transact-SQL.
query_parameterization_type tinyint O tipo de parametrização de consulta.

Valores do código de retorno

0 (sucesso) ou 1 (falha).

Permissões

EXECUTE Requer permissão no banco de dados e DELETE permissão nas exibições do catálogo do Repositório de Consultas.

Exemplos

O exemplo a seguir executa uma instrução e, em seguida, usa sys.fn_stmt_sql_handle_from_sql_stmt para retornar o identificador SQL dessa instrução.

SELECT *
FROM sys.databases;

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

Use a função para correlacionar dados do Repositório de Consultas com outras exibições de gerenciamento dinâmico. O exemplo a seguir:

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;