Поделиться через


sys.fn_stmt_sql_handle_from_sql_stmt (Transact-SQL)

Относится к: SQL Server 2016 (13.x) и более поздние версии Azure SQL DatabaseAzure SQL Managed InstanceSQL Database в Microsoft Fabric

Получает инструкцию stmt_sql_handle Transact-SQL в соответствии с заданным типом параметризации (простой или принудительной). Вы можете ссылаться на запросы, хранящиеся в хранилище запросов, с помощью своих stmt_sql_handle сведений о тексте.

Соглашения о синтаксисе Transact-SQL

Синтаксис

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

Аргументы

query_sql_text

Текст запроса в хранилище запросов, для которого требуется дескриптор. query_sql_textnvarchar(max) без значения по умолчанию.

query_param_type

Тип параметра запроса. query_param_type крошечный, по умолчанию NULL. Возможны следующие значения:

Ценность Описание
NULL (по умолчанию) По умолчанию — 0.
0 None
1 User
2 Simple
3 Принудительный

Возвращенные столбцы

В следующей таблице перечислены возвращаемые sys.fn_stmt_sql_handle_from_sql_stmt столбцы.

Имя столбца Тип Описание
statement_sql_handle varbinary(64) Дескриптор SQL.
query_sql_text nvarchar(max) Текст инструкции Transact-SQL.
query_parameterization_type tinyint Тип параметризации запроса.

Значения кода возврата

0 (успешно) или 1 (сбой).

Разрешения

Требуется EXECUTE разрешение на базу данных и DELETE разрешение на представления каталога хранилища запросов.

Примеры

В следующем примере выполняется инструкция, а затем используется sys.fn_stmt_sql_handle_from_sql_stmt для возврата дескриптора SQL этой инструкции.

SELECT *
FROM sys.databases;

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

Используйте функцию для сопоставления хранилище запросов данных с другими динамическими административными представлениями. Следующий пример:

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;