Sdílet prostřednictvím


sys.fn_stmt_sql_handle_from_sql_stmt (Transact-SQL)

Platí na: SQL Server 2016 (13.x) a novější verze Azure SQL DatabaseAzure SQL Managed InstanceSQL database in Microsoft Fabric

stmt_sql_handle Získá pro Transact-SQL příkaz pod daný typ parametrizace (jednoduchý nebo vynucený). Na dotazy uložené v úložišti dotazů můžete odkazovat pomocí jejich stmt_sql_handle textu, když znáte jeho text.

Transact-SQL konvence syntaxe

Syntaxe

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

Arguments

query_sql_text

Text dotazu v úložišti dotazů, u kterého chcete popisovač použít. query_sql_text je nvarchar(max) bez výchozího nastavení.

query_param_type

Typ parametru dotazu. query_param_type je tinyint, s výchozím nastavením NULL. Možné hodnoty:

Hodnota Description
NULL (výchozí) Výchozí hodnota 0
0 None
1 Uživatel
2 Simple
3 Vynucený

Vrácené sloupce

V následující tabulce jsou uvedeny sloupce, které sys.fn_stmt_sql_handle_from_sql_stmt se vrátí.

Název sloupce Typ Description
statement_sql_handle varbinary(64) Popisovač SQL.
query_sql_text nvarchar(max) Text příkazu Transact-SQL.
query_parameterization_type tinyint Typ parametrizace dotazu.

Hodnoty návratového kódu

0 (úspěch) nebo 1 (selhání).

Povolení

Vyžaduje EXECUTE oprávnění k databázi a DELETE oprávnění k zobrazením katalogu úložiště dotazů.

Examples

Následující příklad spustí příkaz a pak použije sys.fn_stmt_sql_handle_from_sql_stmt k vrácení popisovače SQL tohoto příkazu.

SELECT *
FROM sys.databases;

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

Pomocí funkce můžete korelovat data úložiště dotazů s jinými zobrazeními dynamické správy. Následující příklad:

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;