Condividi tramite


sys.fn_stmt_sql_handle_from_sql_stmt (Transact-SQL)

Si applica a: SQL Server 2016 (13.x) e versioni successive Azure SQL Database AzureSQL Managed InstanceSQL database in Microsoft Fabric

Ottiene l'oggetto per un'istruzione stmt_sql_handle Transact-SQL nel tipo di parametrizzazione specificato (semplice o forzato). È possibile fare riferimento alle query archiviate in Query Store usando le relative stmt_sql_handle informazioni quando si conosce il testo.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

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

Argomenti

query_sql_text

Testo della query nell'archivio query di cui si desidera l'handle. query_sql_text è nvarchar(max) senza impostazione predefinita.

query_param_type

Tipo di parametro della query. query_param_type è tinyint, con un valore predefinito .NULL I valori possibili sono:

Value Descrizione
NULL (impostazione predefinita) L'impostazione predefinita è 0
0 None
1 User
2 Simple
3 Forzato

Colonne restituite

Nella tabella seguente sono elencate le colonne restituite sys.fn_stmt_sql_handle_from_sql_stmt .

Nome colonna Tipo Descrizione
statement_sql_handle varbinary(64) Handle SQL.
query_sql_text nvarchar(max) Testo dell'istruzione Transact-SQL.
query_parameterization_type tinyint Tipo di parametrizzazione della query.

Valori del codice restituito

0 (esito positivo) o 1 (errore).

Autorizzazioni

È richiesta EXECUTE l'autorizzazione per il database e DELETE l'autorizzazione per le viste del catalogo di Query Store.

Esempi

L'esempio seguente esegue un'istruzione e quindi usa sys.fn_stmt_sql_handle_from_sql_stmt per restituire l'handle SQL di tale istruzione.

SELECT *
FROM sys.databases;

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

Usare la funzione per correlare i dati di Query Store con altre viste a gestione dinamica. L'esempio seguente:

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;