sys.fn_stmt_sql_handle_from_sql_stmt (Transact-SQL)
适用于:SQL Server 2016(13.x)及更高版本Azure SQL 数据库Azure SQL 托管实例
获取给定参数化类型(简单或强制)下 Transact-SQL 语句的stmt_sql_handle。 这样,就可以在使用stmt_sql_handle了解其文本时引用存储在查询存储中的查询。
语法
sys.fn_stmt_sql_handle_from_sql_stmt
(
'query_sql_text' ,
[ query_param_type
) [;]
参数
query_sql_text
要处理的查询存储中的查询文本。 query_sql_text是 nvarchar(max),没有默认值。
query_param_type
查询的参数类型。 query_param_type是个小小的。 可能的值为:
NULL - 默认值为 0
0 - None
1 - 用户
2 - 简单
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
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;