Erfasst der SQL Server-Abfragespeicher Parameterwerte?

9

Der in SQL Server 2016 eingeführte neue Query Store ist großartig. Es ist ein guter Ersatz für vieles, was ich früher mit dem älteren Profiler-Tool gemacht habe. Ich habe jedoch keine Möglichkeit gefunden, Parameterwerte zu erfassen , die mit einzelnen Aufrufen der ressourcenintensiven Abfragen verknüpft sind. Ist das möglich?

Ich verstehe, dass sich Query Store mehr mit aggregierten Daten als mit einzelnen Anrufen befasst, daher vermute ich, dass ich hier möglicherweise kein Glück habe. Wenn ich eine langsame Abfrage finde, finde ich es für die Fehlerbehebung praktisch, auch die Parameter zu haben, die einem der langsamsten Aufrufe zugeordnet sind. Ich würde gerne wissen, wie das mit den neuesten und besten Tools geht. (Ich vermisse die Verwendung von Profiler nicht!)

In Bezug auf die Sicherheit ist der Query Store weniger gesperrt als der Profiler? Ich würde denken, dass es Daten von einzelnen Anrufen auf einer bestimmten Ebene erfassen muss, um Aggregate zu berechnen. Nur nicht sicher, ob es etwas davon speichert.

Todd Menier
quelle

Antworten:

10

Abhängig vom Plan sollten Sie in der Lage sein, die ParameterCompiledValuefür jeden Parameter anzuzeigen, indem Sie die in gespeicherten XML-Pläne überprüfen sys.query_store_plan.

Die Liste befindet sich normalerweise gegen Ende des XML-Plans und befindet sich im ParameterListKnoten.

Dies liefert nicht den Wert für jede Ausführung, gibt Ihnen jedoch eine Vorstellung davon, womit der Plan kompiliert wurde.

Wenn Sie den Wert für jede Ausführung wirklich abrufen müssen, können Sie eine Sitzung für erweiterte Ereignisse erstellen, um die Details zu erfassen.

Max Vernon
quelle