Dela via


sys.fn_stmt_sql_handle_from_sql_stmt (Transact-SQL)

Gäller för: SQL Server 2016 (13.x) och senare versioner Azure SQL DatabaseAzure SQL Managed Instance

Hämtar instruktionen stmt_sql_handle for a Transact-SQL under den angivna parameteriseringstypen (enkel eller tvingad). Du kan referera till frågor som lagras i Query Store med hjälp av deras stmt_sql_handle när du känner till deras text.

Transact-SQL syntaxkonventioner

Syntax

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

Arguments

query_sql_text

Texten i frågan i frågearkivet som du vill ha handtaget för. query_sql_text är nvarchar(max) utan standard.

query_param_type

Parametertypen för frågan. query_param_type är tinyint, med standardvärdet NULL. Möjliga värden är:

Värde Description
NULL (standardinställning) Standardvärdet är 0
0 None
1 User
2 Simple
3 Forcerad

Kolumner som returneras

I följande tabell visas de kolumner som sys.fn_stmt_sql_handle_from_sql_stmt returneras.

Kolumnnamn Typ Description
statement_sql_handle varbinary(64) SQL-handtaget.
query_sql_text nvarchar(max) Texten i Transact-SQL-instruktionen.
query_parameterization_type tinyint Frågeparametertypen.

Returnera kodvärden

0 (lyckades) eller 1 (fel).

Permissions

Kräver EXECUTE behörighet för databasen och DELETE behörighet för katalogvyerna i Query Store.

Examples

I följande exempel körs en -instruktion och används sys.fn_stmt_sql_handle_from_sql_stmt sedan för att returnera SQL-handtaget för den instruktionen.

SELECT *
FROM sys.databases;

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

Använd funktionen för att korrelera Query Store-data med andra dynamiska hanteringsvyer. Följande exempel:

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;