sys.fn_stmt_sql_handle_from_sql_stmt (Transact-SQL)
適用対象: SQL Server 2016 (13.x) 以降 Azure SQL Database Azure SQL Managed Instance
指定されたパラメーター化型 (単純または強制) の 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 は tinyintです。 次のいずれかの値になります。
NULL - 既定値は 0
0 - なし
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;
関連項目
- 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)
- クエリのストアを使用した、パフォーマンスの監視