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