sys.fn_stmt_sql_handle_from_sql_stmt (Transact-SQL)

S’applique à : SQL Server 2016 (13.x) et versions ultérieures Azure SQL DatabaseAzure SQL Managed Instance

Obtient la stmt_sql_handle d’une instruction Transact-SQL sous un type de paramétrage donné (simple ou forcé). Cela vous permet de faire référence aux requêtes stockées dans le Magasin des requêtes à l’aide de leur stmt_sql_handle lorsque vous connaissez leur texte.

Conventions de la syntaxe Transact-SQL

Syntaxe

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

Arguments

query_sql_text
Texte de la requête dans le magasin de requêtes dont vous souhaitez obtenir le handle. query_sql_text est un nvarchar(max), sans valeur par défaut.

query_param_type
Type de paramètre de la requête. query_param_type est un tinyint. Les valeurs possibles sont les suivantes :

  • NULL : la valeur par défaut est 0

  • 0 - Aucun

  • 1 - Utilisateur

  • 2 - Simple

  • 3 - Forcé

Colonnes retournées

Le tableau suivant répertorie les colonnes qui retournent sys.fn_stmt_sql_handle_from_sql_stmt .

Nom de la colonne Type Description
statement_sql_handle varbinary(64) Handle SQL.
query_sql_text nvarchar(max) Texte de l’instruction Transact-SQL.
query_parameterization_type tinyint Type de paramétrage de requête.

Valeurs des codes de retour

0 (réussite) ou 1 (échec)

Notes

Autorisations

Nécessite l’autorisation EXECUTE sur la base de données et l’autorisation DELETE sur les vues de catalogue du magasin de requêtes.

Exemples

L’exemple suivant exécute une instruction, puis utilise sys.fn_stmt_sql_handle_from_sql_stmt pour retourner le handle SQL de cette instruction.

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

Utilisez la fonction pour mettre en corrélation Magasin des requêtes données avec d’autres vues de gestion dynamique. L’exemple suivant :

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;

Voir aussi