Захватывает ли хранилище запросов SQL Server значения параметров?

9

Новое хранилище запросов, представленное в SQL Server 2016, великолепно. Это хорошая замена для большей части того, что я делал с более старым инструментом Profiler. Однако я не нашел способа перехватить значения параметров, связанных с отдельными вызовами, на запросы с высоким потреблением ресурсов, которые он обнаруживает. Это возможно?

Я понимаю, что Query Store больше работает с агрегированными данными, чем с отдельными вызовами, поэтому я подозреваю, что мне здесь не повезло. Когда я нахожу медленный запрос, я нахожу удобным для устранения неполадок также иметь параметры, связанные с одним из его самых медленных вызовов. Я хотел бы знать, как сделать это, используя новейшие и лучшие инструменты. (Я не скучаю по использованию Profiler!)

С точки зрения безопасности Query Store менее заблокирован, чем Profiler? Я бы подумал, что нужно собирать данные из отдельных вызовов на каком-то уровне, чтобы рассчитать агрегаты. Просто не уверен, хранит ли он что-либо из этого.

Тодд менье
источник

Ответы:

11

В зависимости от плана, вы сможете увидеть ParameterCompiledValueдля каждого параметра, проверив планы XML, сохраненные в sys.query_store_plan.

Список обычно содержится в конце плана xml и может быть найден в ParameterListузле.

Это не дает значения для каждого выполнения, но дает представление о том, с чем был составлен план.

Если вам действительно нужно получить значение для каждого выполнения, вы можете создать сеанс расширенных событий, чтобы собрать подробности.

Макс Вернон
источник