Профилирование операторов внутри пользовательской функции - PullRequest
2 голосов
/ 12 марта 2010

Я пытаюсь использовать SQL Server Profiler (2005) для отслеживания некоторых проблем производительности приложений.Один из выполняемых вызовов относится к пользовательской функции с табличным значением.Эта функция объединяет выборку, объединяющую несколько таблиц.

В SQL Server Profiler записывается вызов UDF.Однако, выбор, который лежит в основе UDF, вообще не регистрируется.Из-за этого я не получаю полезных данных о том, какие таблицы и индексы подвергаются ударам.Я хотел бы передать эту информацию в помощник по настройке базы данных для получения совета по индексированию.

Есть ли способ (кроме разворачивания самих запросов) регистрировать таблицы, вызываемые UDF, в Profiler?

1 Ответ

3 голосов
/ 12 марта 2010

Вы не можете: TVF с несколькими утверждениями является черным ящиком, и вы можете получить только процессор, чтение, запись и т. Д.

под "черным ящиком" я подразумеваю, что это полностью инкапсулированная и непрозрачная серия операторов внутри другого запроса, и нет такого "потока", как если бы вы получали построчно через сохраненный процесс.

Встроенный TVF расширяется как представление или макрос в основной запрос и его можно увидеть.

Редактировать: связанные: Функция таблицы значений Куда дел мой план запроса?

...