Поделиться через


Просмотр и анализ трассировок с помощью SQL Server Profiler

Область применения: SQL Server Управляемый экземпляр SQL Azure

Используйте SQL Server Profiler для просмотра данных захваченных событий в трассировке. SQL Server Profiler отображает данные на основе определенных свойств трассировки. Одним из способов анализа данных SQL Server является копирование данных в другую программу, например SQL Server или помощник по настройке ядра СУБД. Советник по оптимизации модуля баз данных может использовать файл трассировки, содержащий события пакетной обработки и удалённого вызова процедур SQL (RPC), если столбец данных Текст включён в трассировку. Для того чтобы правильные события и столбцы были захвачены для использования с Советником по настройке Системы управления базами данных, используйте предопределенный шаблон настройки, который поставляется с SQL Server Profiler.

При открытии трассировки с помощью SQL Server Profiler файл трассировки не должен иметь расширение TRC, если файл был создан хранимыми процедурами SQL Server Profiler или системой трассировки SQL.

SQL Server Profiler также может считывать файлы трассировки .log SQL и универсальные файлы скриптов SQL. При открытии файла трассировки .log SQL, который не имеет .log расширения файла, например trace.txt, укажите SQLTrace_Log в качестве формата файла.

Вы можете настроить формат отображения даты и времени SQL Server Profiler для облегчения анализа трассировки.

Устранение неполадок с данными

С помощью SQL Server Profiler можно устранять неполадки с данными, группируя трассировки или файлы трассировки по столбцам данных длительности, ЦП, чтений или записей. Примерами данных, которые вы можете диагностировать, являются запросы, которые плохо выполняются или имеют очень большое количество логических операций чтения.

Дополнительные сведения можно получить, сохранив трассировки в таблицы и применив инструкции Transact-SQL для запросов по данным о событиях. Например, чтобы определить, какие из событий SQL:BatchCompleted превысили время ожидания, выполните следующее:

SELECT TextData,
       Duration,
       CPU
FROM trace_table_name
WHERE EventClass = 12
-- SQL:BatchCompleted events
      AND CPU < (Duration * 1000);

Сервер сообщает о длительности события в микросекундах (10^-6 с), а о количестве времени, затраченного ЦП на событие, в миллисекундах (10^-3 с). Графический пользовательский интерфейс SQL Server Profiler отображает столбец "Длительность" в миллисекундах по умолчанию, но при сохранении трассировки в файле или таблице базы данных значение столбца "Длительность" записывается в микросекунды. Эти измерения предназначены для запросов Transact-SQL (T-SQL).

Отображение имен объектов при просмотре трассировок

Если необходимо отобразить имя объекта вместо идентификатора объекта (Object ID), нужно захватывать столбцы данных Server Name и Database ID вместе со столбцом данных Object Name .

При выборе группирования по столбцу данных Object ID убедитесь, что группирование выполняется вначале по столбцам данных Server Name и Database ID , а уже потом по столбцу Object ID . Аналогично при группировании по столбцу данных Index ID убедитесь, что группирование выполняется вначале по столбцам данных Server Name, Database IDи Object ID , а потом уже по столбцу Index ID . Необходимо сгруппировать в этом порядке, так как идентификаторы объектов и индексов не являются уникальными среди серверов и баз данных (и среди объектов для идентификаторов индексов).

Поиск определенных событий в трассировке

Для нахождения и группировки событий в трассировке выполните следующие шаги.

  1. Создайте свой след.

    • При определении трассировки укажите столбцы данных Event Class, ClientProcessIDи Start Time в дополнение к любым другим столбцам данных, которые необходимо захватывать. Дополнительные сведения см. в разделе "Создание трассировки" (SQL Server Profiler).

    • Сгруппировать захваченные данные столбцом данных класса событий и записать трассировку в файл или таблицу. Чтобы сгруппировать захваченные данные, выберите " Упорядочить столбцы " на вкладке "Выбор событий " диалогового окна "Свойства трассировки". Дополнительные сведения см. в разделе "Упорядочивание столбцов", отображаемых в трассировке (SQL Server Profiler).

    • Запустите трассировку и остановите ее по истечении определенного времени или после захвата необходимого количества событий.

  2. Найдите целевые события.

    • Откройте файл или таблицу трассировки и разверните узел интересующего вас класса событий, например Цепочка взаимоблокировки. Дополнительные сведения см. в разделе "Открыть файл трассировки" (SQL Server Profiler) или открыть таблицу трассировки (SQL Server Profiler).

    • Выполните поиск по данным трассировки, пока не найдете нужные события (используйте команду "Найти " в меню "Изменить " профилировщика SQL Server, чтобы найти значения в трассировке). Запомните значения в столбцах данных ClientProcessID и Start Time для искомых событий трассировки.

  3. Отображение событий в контексте.

    • Отображение свойств трассировки и группирование по столбцу данных ClientProcessID , а не по столбцу данных класса событий .

    • Раскройте узлы для каждого ID клиентского процесса, который необходимо просмотреть. Выполните поиск по трассировки вручную или используйте Find , пока не найдете ранее отмеченные значения времени начала целевых событий. События отображаются в хронологическом порядке вместе с другими событиями, которые принадлежат к каждому выбранному идентификатору клиентского процесса. Например, события Взаимоблокировки и Цепочки взаимоблокировок, захваченные в трассировке, появляются сразу после событий SQL:BatchStarting в расширенном идентификаторе клиентского процесса.

Такой же метод может быть применен для поиска сгруппированных событий. Как только будут найдены искомые события, сгруппируйте их по ClientProcessID, имя_приложенияили другому классу событий для просмотра соответствующей деятельности в хронологическом порядке.