sys.fn_stmt_sql_handle_from_sql_stmt (Transact-SQL)

Aplica-se a: SQL Server 2016 (13.x) e versões posteriores Banco de Dados SQL do AzureInstância Gerenciada de SQL do Azure

Obtém o stmt_sql_handle para uma instrução Transact-SQL em determinado tipo de parametrização (simples ou forçada). Isso permite que você faça referência a consultas armazenadas no Repositório de Consultas usando seus stmt_sql_handle quando você souber seu texto.

Convenções de sintaxe de Transact-SQL

Sintaxe

sys.fn_stmt_sql_handle_from_sql_stmt
(
    '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 é um nvarchar(max), sem padrão.

query_param_type
É o tipo de parâmetro da consulta. query_param_type é um tinyint. Os valores possíveis são:

  • NULL - o padrão é 0

  • 0 – Nenhum

  • 1 - Usuário

  • 2 - Simples

  • 3 - Forçado

Colunas retornadas

A tabela a seguir lista as colunas que sys.fn_stmt_sql_handle_from_sql_stmt retornam.

Nome da coluna Type 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 da consulta.

Valores do código de retorno

0 (êxito) ou 1 (falha)

Comentários

Permissões

Requer a permissão EXECUTE no banco de dados e a permissão DELETE nas exibições de 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
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;

Confira também