web-dev-qa-db-ja.com

SQL Serverクエリストアはパラメーター値をキャプチャしますか?

SQL Server 2016で導入された新しいクエリストアは素晴らしいです。これは、以前のプロファイラーツールで行っていた処理の多くを置き換えるものです。ただし、リソースを大量に消費するクエリへの個別の呼び出しに関連付けられたパラメータ値をキャプチャする方法は見つかりませんでした。これは可能ですか?

Query Storeは個々の呼び出しよりも集計データを扱うことを理解しているので、ここでは運が悪いのではないかと思います。遅いクエリを見つけたとき、最も遅い呼び出しの1つに関連付けられたパラメーターも持つとトラブルシューティングに便利です。最新の優れたツールを使用してこれを行う方法を知りたいのですが。 (プロファイラーの使用をお見逃しなく!)

セキュリティの観点から、Query Storeはプロファイラーよりもロックダウンされていますか?集計を計算するには、あるレベルで個々の呼び出しからデータをキャプチャする必要があると思います。それのいずれかが格納されているかどうかはわかりません。

9
Todd Menier

プランによっては、sys.query_store_planに保存されているXMLプランを調べることで、各パラメーターのParameterCompiledValueを確認できるはずです。

このリストは通常​​、xmlプランの終わり頃に含まれており、ParameterListノードにあります。

これはすべての実行の価値を提供するわけではありませんが、プランがどのようにコンパイルされたかについてのアイデアを提供します。

各実行の値を本当に取得する必要がある場合は、拡張イベントセッションを作成して詳細を収集できます。

10
Max Vernon