Udostępnij za pomocą


sys.fn_stmt_sql_handle_from_sql_stmt (Transact-SQL)

Dotyczy do: SQL Server 2016 (13.x) i nowsze wersje Azure SQL DatabaseAzure SQL Managed InstanceSQL database in Microsoft Fabric

Pobiera instrukcję stmt_sql_handle for Transact-SQL w ramach danego typu parametryzacji (proste lub wymuszone). Zapytania przechowywane w magazynie zapytań można odwoływać się do zapytań, używając ich stmt_sql_handle , gdy znasz ich tekst.

Transact-SQL konwencje składni

Składnia

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

Arguments

query_sql_text

Tekst zapytania w magazynie zapytań, którego chcesz obsłużyć. query_sql_text to nvarchar(max) bez wartości domyślnej.

query_param_type

Typ parametru zapytania. query_param_type jest tinyint, z wartością domyślną NULL. Dopuszczalne wartości:

Wartość Description
NULL (ustawienie domyślne) Wartości domyślne 0
0 Żaden
1 User
2 Simple
3 Zmuszona

Zwrócone kolumny

W poniższej tabeli wymieniono zwracane kolumny sys.fn_stmt_sql_handle_from_sql_stmt .

Nazwa kolumny Typ Description
statement_sql_handle varbinary(64) Dojście SQL.
query_sql_text nvarchar(max) Tekst instrukcji Transact-SQL.
query_parameterization_type tinyint Typ parametryzacji zapytania.

Zwracanie wartości kodu

0 (powodzenie) lub 1 (niepowodzenie).

Permissions

Wymaga EXECUTE uprawnień do bazy danych i DELETE uprawnień w widokach wykazu magazynu zapytań.

Przykłady

Poniższy przykład wykonuje instrukcję, a następnie używa sys.fn_stmt_sql_handle_from_sql_stmt metody do zwrócenia dojścia SQL do tej instrukcji.

SELECT *
FROM sys.databases;

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

Użyj funkcji , aby skorelować dane magazynu zapytań z innymi dynamicznymi widokami zarządzania. Poniższy przykład:

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;