対象者:SQL Server 2016 (13.x) およびそれ以降のバージョン
Azure SQL Database
Azure SQL Managed Instance
SQL Database in Microsoft Fabric
指定されたパラメーター化型 (単純または強制) の Transact-SQL ステートメントの stmt_sql_handle を取得します。 テキストがわかっている場合は、その 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;
関連コンテンツ
- 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)
- クエリ ストアを使用したパフォーマンスの監視