sys.fn_stmt_sql_handle_from_sql_stmt (Transact-SQL)

適用於: SQL Server 2016 (13.x) 和更新版本 Azure SQL DatabaseAzure SQL 受控執行個體

取得指定參數化類型下 Transact-SQL 語句的stmt_sql_handle(簡單或強制)。 這可讓您在知道其文字時,使用stmt_sql_handle來參考儲存在 查詢存放區 中的查詢。

Transact-SQL 語法慣例

語法

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是一個tinyint。 可能的值包括:

  • 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;

另請參閱