SQL Server Profiler работает навсегда со скалярной функцией - PullRequest
1 голос
/ 01 апреля 2011

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

Ответы [ 2 ]

0 голосов
/ 01 апреля 2011

Вы можете установить фильтр для исключения этого ObjectType из трассы.Тип объекта для исключения равен 20038 Я считаю, .

0 голосов
/ 01 апреля 2011

Ваш вопрос не совсем понятен (для меня): Profiler сам ничего не запускает, он только «наблюдает» за тем, что происходит на сервере.Таким образом, вы можете сказать Profiler «игнорировать события, поступающие из UDF», но вы не можете сказать ему «не выполнять UDF», поскольку сам Profiler ничего не выполняет.Для вызова процедуры UDF вам необходимо закомментировать ее или добавить условную логику, чтобы не вызывать функцию при передаче параметра @NoUDF или чего-то подобного.Хотя я не уверен, почему вы все равно хотите это закомментировать, потому что ваш анализ производительности, вероятно, будет менее значимым, если вы это сделаете?

...