Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Операторы профилирования внутри пользовательской функции

Автор вопроса: Craig WalkerОтветов: 1

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

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

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

sql-servertsqlprofilinguser-defined-functionssql-server-2005

Ответы

Ответ 1 · рейтинг 3 · gbn

Вы не можете: TVF с несколькими операторами - это черный ящик, и вы можете получить только CPU, Read, Writes и т. Д.

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

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

Изменить: связано: Табличная функция с ценным значением, где мои план запроса пойти?

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы