Ответ
SQL Server Profiler — это графический инструмент для трассировки и анализа событий в Microsoft SQL Server. Он позволяет захватывать и просматривать последовательность операций, выполняемых на сервере, что критически важно для отладки, аудита и анализа производительности.
Основные возможности и сценарии использования:
- Профилирование производительности: Выявление медленных запросов, анализ времени выполнения (
Duration), чтений (Reads) и записей (Writes). - Отладка приложений: Захват точного SQL-кода, который генерирует ORM (например, Entity Framework).
- Аудит безопасности: Мониторинг попыток входа, изменений схемы или прав доступа.
- Анализ блокировок и взаимоблокировок (deadlocks): Понимание причин конфликтов параллельного доступа.
- Воспроизведение трассировок: Сохранение сеанса трассировки и его последующее воспроизведение на тестовом сервере для отладки.
Пример создания трассировки через системные хранимые процедуры (T-SQL):
-- Создание трассировки
DECLARE @trace_id INT, @maxfilesize BIGINT = 5;
EXEC sp_trace_create @trace_id OUTPUT, 0, N'C:TracesMyTrace', @maxfilesize;
-- Добавление события SQL:BatchCompleted (завершение выполнения пакета SQL)
EXEC sp_trace_setevent @trace_id, 12, 1, 1; -- TextData (SQL-текст)
EXEC sp_trace_setevent @trace_id, 12, 13, 1; -- Duration (длительность)
EXEC sp_trace_setevent @trace_id, 12, 14, 1; -- StartTime
EXEC sp_trace_setevent @trace_id, 12, 16, 1; -- Reads (логические чтения)
-- Запуск трассировки
EXEC sp_trace_setstatus @trace_id, 1;
-- Чтобы остановить и закрыть трассировку позже:
-- EXEC sp_trace_setstatus @trace_id, 0;
-- EXEC sp_trace_setstatus @trace_id, 2;
Важное примечание: Начиная с SQL Server 2012, SQL Profiler считается устаревшим (deprecated). Microsoft рекомендует использовать более современную и эффективную технологию Extended Events (XEvents). XEvents создаёт меньшую нагрузку на сервер и предоставляет более детализированную информацию. Управлять XEvents можно через SSMS (Extended Events GUI) или T-SQL.