Freigeben über


sys.fn_stmt_sql_handle_from_sql_stmt (Transact-SQL)

Gilt für: SQL Server 2016 (13.x) und spätere Versionen Azure SQL DatabaseAzure SQL Managed InstanceSQL database in Microsoft Fabric

Ruft die stmt_sql_handle für eine Transact-SQL-Anweisung unter dem angegebenen Parameterisierungstyp (einfach oder erzwungen) ab. Sie können auf abfragen verweisen, die im Abfragespeicher gespeichert sind, indem Sie deren stmt_sql_handle Text verwenden.

Transact-SQL-Syntaxkonventionen

Syntax

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

Argumente

query_sql_text

Der Text der Abfrage im Abfragespeicher, der das Handle enthalten soll. query_sql_text ist nvarchar(max) ohne Standard.

query_param_type

Der Parametertyp der Abfrage. query_param_type ist winzig, mit einem Standardwert von NULL. Dabei sind folgende Werte möglich:

Wert Beschreibung
NULL (Standardwert) Der Standardwert lautet 0.
0 Nichts
1 Benutzer
2 Simple
3 Erzwungen

Zurückgegebene Spalten

In der folgenden Tabelle sind die spalten aufgeführt, die sys.fn_stmt_sql_handle_from_sql_stmt zurückgegeben werden.

Spaltenname type Beschreibung
statement_sql_handle varbinary(64) Das SQL-Handle.
query_sql_text nvarchar(max) Der Text der Transact-SQL-Anweisung.
query_parameterization_type tinyint Der Abfrageparametertyp.

Rückgabecodewerte

0 (erfolgreich) oder 1 Fehler.

Berechtigungen

Erfordert EXECUTE Berechtigungen für die Datenbank und DELETE die Berechtigung für die Abfragespeicherkatalogansichten.

Beispiele

Im folgenden Beispiel wird eine Anweisung ausgeführt, und anschließend wird sys.fn_stmt_sql_handle_from_sql_stmt das SQL-Handle dieser Anweisung zurückgegeben.

SELECT *
FROM sys.databases;

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

Verwenden Sie die Funktion, um Abfragespeicher Daten mit anderen dynamischen Verwaltungsansichten zu korrelieren. Im Beispiel unten geschieht Folgendes:

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;