Freigeben über


sys.fn_stmt_sql_handle_from_sql_stmt (Transact-SQL)

Gilt für: SQL Server 2016 (13.x) und höher Azure SQL-Datenbank Azure SQL Managed Instance

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

Transact-SQL-Syntaxkonventionen

Syntax

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

Argumente

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

query_param_type
Ist der Parametertyp der Abfrage. query_param_type ist eine winzige. Dabei sind folgende Werte möglich:

  • NULL- Standardwert ist 0.

  • 0 - Keine

  • 1 – Benutzer

  • 2 - Einfach

  • 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“ (fehlerhaft)

Hinweise

Berechtigungen

Erfordert die EXECUTE-Berechtigung für die Datenbank und DIE DELETE-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
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;

Siehe auch