Partager via


sys.fn_stmt_sql_handle_from_sql_stmt (Transact-SQL)

S’applique à : SQL Server 2016 (13.x) et versions ultérieures Azure SQL SQL ManagedInstanceSQL database in Microsoft Fabric

Obtient l’instruction stmt_sql_handle Transact-SQL sous le type de paramétrage donné (simple ou forcé). Vous pouvez faire référence aux requêtes stockées dans le Magasin des requêtes à l’aide de leur stmt_sql_handle texte.

Conventions de la syntaxe Transact-SQL

Syntaxe

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

Arguments

query_sql_text

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

query_param_type

Type de paramètre de la requête. query_param_type est tinyint, avec une valeur par défaut de NULL. Les valeurs possibles sont les suivantes :

Valeur Description
NULL (valeur par défaut) 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) or 1 (échec).

autorisations

Nécessite EXECUTE l’autorisation sur la base de données et DELETE l’autorisation sur les vues du catalogue du Magasin des 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
     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;