создать трассировку (приложение SQL Server Profiler)
В этом подразделе описывается, как создать трассировку при помощи Приложение SQL Server Profiler .
Создание трассировки
- В меню Файл выберите пункт Создать трассировку, а затем подключитесь к экземпляру SQL Server. отображается диалоговое окно Свойства трассировки .
Примечание Если выбран параметр Начать трассировку немедленно после установления соединения , диалоговое окно Свойства трассировки не появляется, и начинается трассировка. Чтобы отключить этот параметр, в меню *Сервис* выберите пункт Параметры и снимите флажок «Начать трассировку немедленно после установления соединения».
- Нажмите кнопку Сохранить в файл для фиксации трассировки в файле. Укажите значение Установить максимальный размер файла. Значение по умолчанию — 5 мегабайт. При необходимости выберите Включить операцию переключения на файл продолжения для автоматического создания новых файлов при достижении максимального размера файла. Также можно дополнительно выбрать Сервер обрабатывает данные трассировки, что приведет к тому, что вместо приложения клиента данные трассировки будет обрабатывать служба, выполняющая трассировку. При обработке данных трассировки сервером исключена возможность пропуска события даже в тяжелых условиях, хотя это и приводит к снижению производительности сервера.
- Выберите Сохранить в таблицу для сохранения результатов трассировки в таблицу базы данных. При необходимости установите флажок Установить максимальное число строки укажите значение.
ВНИМАНИЕ! Если результаты трассировки не сохраняются в файлы или таблицы, их можно просмотреть, пока открыто приложение Приложение SQL Server Profiler . Однако результаты трассировки исчезнут после того, как будет остановлена трассировка и закрыто приложение Приложение SQL Server Profiler. Чтобы избежать потерю данных трассировки, выберите Сохранить в меню Файл для сохранения результатов перед закрытием Приложение SQL Server Profiler.
Создание трассировки (Transact-SQL)
В этом подразделе описано, как использовать хранимые процедуры для создания трассировки.
Создание трассировки
- Выполните хранимую процедуру sp_trace_create с необходимыми аргументами для создания новой трассировки. Новая трассировка будет находиться в остановленном состоянии (status имеет значение 0).
- Выполните хранимую процедуру sp_trace_setevent с необходимыми аргументами, чтобы выбрать события и столбцы для трассировки.
- Дополнительно выполните хранимую процедуру sp_trace_setfilter , чтобы установить любой фильтр или комбинацию фильтров. Хранимые процедурыsp_trace_setevent и sp_trace_setfilter могут быть выполнены только для существующих остановленных трассировок.
Внимание В отличие от обычных хранимых процедур, параметры всех хранимых процедур приложения SQL Server Profiler (sp_trace_xx) жестко типизированы и не поддерживают автоматическое преобразование типов данных. Если эти параметры не вызываются вместе с правильными типами данных входных параметров, как указано в описании аргумента, хранимая процедура возвращает ошибку.
Примеры
В следующем коде показано создание трассировки с помощью Transact-SQL. Он состоит из трех разделов: создание трассировки, заполнение файла трассировки и остановка трассировки. Настройте трассировку, добавив события, которые необходимо отслеживать. Список событий и столбцов см. в sp_trace_setevent (Transact-SQL).
О. Создание трассировки
Следующий код создает трассировку, добавляет в нее события и затем запускает ее:
DECLARE @RC int, @TraceID int, @on BIT EXEC @rc = sp_trace_create @TraceID output, 0, N'C:\SampleTrace' -- Select the return code to see if the trace creation was successful. SELECT RC = @RC, TraceID = @TraceID -- Set the events and data columns you need to capture. SELECT @on = 1 -- 10 is RPC:Completed event. 1 is TextData column. EXEC sp_trace_setevent @TraceID, 10, 1, @on -- 13 is SQL:BatchStarting, 11 is LoginName EXEC sp_trace_setevent @TraceID, 13, 11, @on -- 13 is SQL:BatchStarting, 14 is StartTime EXEC sp_trace_setevent @TraceID, 13, 14, @on -- 12 is SQL:BatchCompleted, 15 is EndTime EXEC sp_trace_setevent @TraceID, 12, 15, @on -- 13 is SQL:BatchStarting, 1 is TextData EXEC sp_trace_setevent @TraceID, 13, 1, @on -- Set any filter. Not provided in this example --EXEC sp_trace_setfilter 1, 10, 0, 6, N'%Profiler%' -- Start Trace (status 1 = start) EXEC @RC = sp_trace_setstatus @TraceID, 1 GO
B. Заполнение файла трассировки
Теперь, когда трассировка создана и запущена, выполните следующий код, чтобы заполнить трассировку активностью.
SELECT * FROM master.sys.databases GO SELECT * FROM ::fn_trace_getinfo(default) GO
C. Остановка трассировки
Трассировку можно в любое время остановить и перезапустить. В этом примере выполнение следующего кода позволит остановить трассировку, закрыть ее и удалить ее определение.
DECLARE @TraceID int -- Populate a variable with the trace_id of the current trace SELECT @TraceID = TraceID FROM ::fn_trace_getinfo(default) WHERE VALUE = N'C:\SampleTrace.trc' -- First stop the trace. EXEC sp_trace_setstatus @TraceID, 0 -- Close and then delete its definition from SQL Server. EXEC sp_trace_setstatus @TraceID, 2
D. Изучение файла трассировки
Чтобы проверить файл трассировки, откройте файл SampleTrace.trc с помощью SQL Server Profiler.
Получение трассировки в SQL Server Profiler
В данной статье будет подробно описан процесс получения и сохранения трассировки в MS SQL Server с помощью приложения SQL Server Profiler. Для чего нужна трассировка и как ее потом использовать можно посмотреть, например, в данном разборе. Ниже только пример сбора трассировки в SQL Server 2012 (в более старых версиях SQL Server процесс получения трассировки аналогичен). Итак, поехали.
Запускаем SQL Server Profiler, сделать это можно, например, из SQL Server Management Studio («Сервис» ( Tools ) — «SQL Server Приложение Profiler»)
Вводим учетные данные подключения к SQL Server (это нужно будет делать почти на каждом шаге), после чего откроется окно настройки трассировки.
В настройках выбираем события, которые будут анализироваться (список колонки «Events») и измерения в разрезе которых, будет происходить анализ событий (колонки таблицы трассировки).
Для выбора событий нужно установить галочку «Показывать все события» (Show All Events), а для выбора измерений анализа установить галочку «Показать все столбцы» (Show All Columns). Для удобства рекомендую сначала выбрать все интересующие вас события, а потом измерения.

Для примера рассмотрим трассировку для события «RPC Completed» по одной базе «FTO_ZUP_CENTR_TEST». Настройка свойств трассировки выглядит так:

В измерения анализа я обязательно включаю «DatabaseName», чтобы была возможность получить данные трассировки только по интересующей нас базе.
Для добавления фильтра нажимаем кнопку «Фильтры столбцов» (Column Filters)

и настраиваем отбор по базе данных:

Трассировка настроена! Для запуска используем кнопки управления трассировкой:


Трассировка будет собирать данные о всех настроенных действиях с базой. Для того чтобы исключить лишнее, нужно:
- Остановить трассировку
- Поймать в отладчике интересующее событие
- Снова запустить трассировку
- Выполнить необходимый запрос или код в отладчике
- Опять остановить трассировку
- Отпустить отладку
Рассмотрим на примере.
Итак, трассировка на «паузе», останавливаемся в нужном месте кода.

Запускаем трассировку и делаем «шаг» в отладчике.

Трассировка получена! Приостанавливаем трассировку и отпускаем отладку.
Для сохранения полученной трассировки в таблицу нужно выбрать в меню «Файл» (File) — «Сохранить как» (Save As) — «Таблица трассировки…» (Trace Table).

Откроется окно выбора параметров сохранения:

Здесь указываем имя таблицы и базу, в которую нужно сохранить трассировку.
Нажимаем «ОК», переходим в SQL Server Management Studio , находим нашу базу, разворачиваем группировку таблицы и видим результат наших трудов.

Собственно говоря, все! Теперь можно анализировать и обрабатывать данные как вам угодно.
Рассмотрим несколько примеров:
Пример №1: Выборка всех строк.

Пример №2: Количество строк таблицы.

Пример №3: Выборка строк, в которых значение «Duration» (продолжительность операции) больше 1000 миллисекунд.

Аналогичным образом можно получить любую необходимую вам информацию из полученной трассировки.
Помогла ли вам данная статья?
Смотрите также:
Удаление компонент MS SQL Server 2012 Может случиться так, что в процессе установки MS SQL Server 2012 были установлены компоненты, необходимость в которых со временем отпала (или были установлены по ошибке). В этом случае, в целях…
Лицензирование MS SQL Server 2012 В данной статье будут рассмотрены способы лицензирования Microsoft SQL Server 2012. Будет приведен краткий обзор каждого из способов лицензирования, а также указаны возможные варианты лицензирования для различных выпусков MS SQL Server…
Редакции MS SQL Server 2012 Ниже приводится список существующих редакций Microsoft SQL Server 2012, а также приводится краткий обзор каждой из них. Microsoft SQL Server 2012 предлагается в нескольких специально разработанных редакциях:…
Запись опубликована в рубрике Microsoft SQL Server 2012, Эксперт 1С с метками 1Сv8, SQL Profiler. Добавьте в закладки постоянную ссылку.
Используем режим трассировки в SQL Server Express (без SQL Profiler)
В некоторых сценариях отладки приложений использующих базы данных SQL Server возникает необходимость анализа SQL-запросов отправляемых к БД. В платных редакциях SQL Server для этого можно использовать утилиту SQL Profiler . В редакции SQL Server Express этой утилиты нет, но есть возможность использования встроенного функционала трассировки. В этой заметке мы кратко рассмотрим пример использования такой возможности.
Для начала нам нужно будет передать дополнительный параметр запуска (T4032) службе экземпляра SQL Server. Этот параметр будет определять необходимость включения механизмов трассировки для данного экземпляра. В некоторых источниках можно встретить вариант запуска службы с передачей параметра в командной строке:
net start MSSQL$SQLEXPRESS /T4032
Помимо этого, изменить параметры запуска службы можно в графической утилите SQL Server Configuration Manager. В консоли перейдём в узел SQL Server Services, выберем интересующий нас экземпляр службы SQL Server и откроем его свойства. На вкладке Startup Parameters добавим параметр включения трассировки -T4032
![]()
Сохраним изменения и перезапустим службу настроенного экземпляра SQL Server.
Затем, для того, чтобы события трассировки появились в логах SQL Server (сами файлы трассировки можно найти в папке логов SQL Server, например %ProgramFiles%\Microsoft SQL Server\MSSQL.*\MSSQL\LOG ) на интересующем нас экземпляре нужно выполнить запрос:
USE master DBCC TRACEON(3605,-1)
После этого в SQL Server Management Studio в Management > SQL Server Logs > Current можно будет видеть всю активность происходящую на экземпляре SQL Server
![]()
Таким образом все SQL-запросы приходящие от любых клиентов к той или иной базе данных экземпляра SQL Server будут отображаться в логе. Чтобы проверить текущий набор флагов трассировки можно выполнить запрос DBCC TRACESTATUS
![]()
После того как нужные нам данные трейсов собраны обязательно отключаем ранее включённый нами флаг трассировки, чтобы не создавать избыточной нагрузки на экземпляр SQL Server
USE master DBCC TRACEOFF(3605,-1)
И не забываем убрать параметр T4032 из списка параметров загрузки с последующим перезапуском экземпляра SQL Server.
Дополнительные источники информации:
- MSDN Library — Transact-SQL Reference (Database Engine) — DBCC TRACEON
- MSDN Library — Transact-SQL Reference (Database Engine) — Trace Flags
- KB139655 — INF: Tracing SQL Generated by MS SQL Server ODBC Driver
- SqlServerGeeks — SQL Server Trace Flag 4032
- SQL Service Nordic AB — Updated: Microsoft SQL Server Trace Flag list
- Toad World — SQL Server Community — Wiki — Trace Flags
- Thomas LaRock Video — Trace Statements Without SQL Profiler
- CodePlex — ExpressProfiler Project
