sys.fn_stmt_sql_handle_from_sql_stmt (Transact-SQL)

適用対象:SQL Server 2016 (13.x) 以降のデータベースAzure SQLAzure SQL Managed Instance

指定されたパラメーター化型 (単純または強制) の 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が返す列の一覧を示します。

列名 Type 説明
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 (Transact-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)
クエリのストアを使用した、パフォーマンスの監視