sys.fn_stmt_sql_handle_from_sql_stmt (Transact-SQL)

適用于:SQL Server 2016 (13.x) 和更新版本 Azure SQL Database Azure 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_textNvarchar (max) ,沒有預設值。

query_param_type
這是查詢的參數類型。 query_param_typeTinyint。 可能的值包括:

  • Null - 預設值為 0

  • 0 - 無

  • 1 - 使用者

  • 2 - 簡單

  • 3 - 強制

傳回的資料行

下表列出sys.fn_stmt_sql_handle_from_sql_stmt傳回的資料行。

資料行名稱 類型 Description
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;  

另請參閱

sp_query_store_force_plan (Transact-SQL)
sp_query_store_remove_plan (Transct-SQL)
sp_query_store_unforce_plan (Transact-SQL)
sp_query_store_reset_exec_stats (Transact-SQL)
sp_query_store_flush_db (Transact-SQL)
sp_query_store_remove_query (Transact-SQL)
(Transact-SQL) 查詢存放區目錄檢視
使用查詢存放區監視效能