适用于: SQL Server 2016 (13.x) 及以后版本
Azure SQL 数据库
Azure SQL Managed Instance
Microsoft Fabric 中的 SQL 数据库
获取 stmt_sql_handle 给定参数化类型(简单或强制)下的 Transact-SQL 语句。 可以使用查询存储中存储的查询了解其 stmt_sql_handle 文本时引用它们。
语法
sys.fn_stmt_sql_handle_from_sql_stmt
(
N'query_sql_text'
, [ query_param_type ]
)
[ ; ]
参数
query_sql_text
要处理的查询存储中的查询文本。 query_sql_text 为 nvarchar(max), 没有默认值。
query_param_type
查询的参数类型。
query_param_type 为 tinyint,默认值为 NULL. 可能的值为:
| 价值 | 描述 |
|---|---|
NULL(默认值) |
默认为 0 |
| 0 | None |
| 1 | 用户 |
| 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;