Используем режим трассировки в SQL Server Express (без SQL Profiler)

imageВ некоторых сценариях отладки приложений использующих базы данных 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  

image

Сохраним изменения и перезапустим службу настроенного экземпляра 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

image

Таким образом все SQL-запросы приходящие от любых клиентов к той или иной базе данных экземпляра SQL Server будут отображаться в логе. Чтобы проверить текущий набор флагов трассировки можно выполнить запрос DBCC TRACESTATUS

image

После того как нужные нам данные трейсов собраны обязательно отключаем ранее включённый нами флаг трассировки, чтобы не создавать избыточной нагрузки на экземпляр SQL Server

USE master
DBCC TRACEOFF(3605,-1)

И не забываем убрать параметр T4032 из списка параметров загрузки с последующим перезапуском экземпляра SQL Server.

Дополнительные источники информации:

Добавить комментарий