Ответ Кевина описывает, какие события нужно захватить в SQL Trace / SQL Profiler. Если немного расширить этот ответ - SP:StmtCompleted
покажет вам, как каждое утверждение в хранимой процедуре завершается, как это звучит.
Также, если вы заняты системой и пытаетесь диагностировать проблему производительности, вам следует быть осторожным с SQL Profiler. SQL Profiler намного медленнее, чем трассировка в файл или использование расширенных событий. Это сообщение в блоге Джонатана Кехайяса показывает примерно 90% накладных расходов на производительность системы при использовании SQL Profiler и около 10% накладных расходов при трассировке в файл. Меньше для расширенных событий. Вот почему обычно не рекомендуется запускать сам SQL Profiler, пока
Хотя эта информация доступна через расширенные события, я бы по-прежнему предлагал использовать SQL Trace (технологию, лежащую в основе SQL Profiler), но вместо этого использовать трассировку в файл.(если вы хотите инвестировать в изучение и использование расширенных событий, это будет путь, в будущей версии SQL Server SQL Trace не будет, и все, что у нас будет - это расширенные события). Я бы также предложил вам отфильтровать через кнопку «Фильтры столбцов» как можно больше фонового шума, чтобы убедиться, что вы захватываете только то, что необходимо. Вы можете настроить трассировку с помощью инструмента Profiler, используя шаги, которые Кевин описывает в своем хорошем ответе, а затем добавить фильтр из того же графического интерфейса. Затем вы можете экспортировать трассировку в виде скрипта и запустить этот скрипт на трассировке SQL Server в файл в папке, которая не содержит файлов базы данных или журнала транзакций. Чтобы экспортировать, вы просто должны настроить свою трассировку, запустить ее на несколько секунд, чтобы убедиться, что вы захватываете то, что хотите, остановить, а затем перейти к строке меню и File
->Export
-> Script Trace Definition
и сохраните файл. Затем откройте этот файл в новом окне запроса на сервере, который вы собираетесь отслеживать. Вы можете узнать больше об опциях и определениях этого скрипта, который вы создали, посмотрев справочные статьи для различных хранимых процедур, используемых в этом скрипте, который вы только что создали, начиная здесь .
Если у вас есть время и вы хотите учиться, вы также можете прочитать некоторые статьи о расширенных событиях и узнать, как собирать информацию. Jonathan Kehayias - отличный ресурс для постов в блоге, когда вы готовы начать там.
Вы можете захватить отдельные операторы в хранимой процедуре через SQL Server Profiler. Для этого на вкладке «Выбор событий» установите флажок «Показать все события». Затем прокрутите вниз до категории «Хранимые процедуры» и установите флажок « SP: StmtCompleted» . Если у вас также выбраны события SQL: BatchStarted и SQL: BatchCompleted , вы можете получить от начала до конца картину выполнения хранимой процедуры, связав все это вместе с помощью SPID.
Это также может помочь в просмотре кэша плана, чтобы узнать, можете ли вы получить план запроса для медленно выполняющейся процедуры. Вы можете начать с чего-то вроде этого:
источник