SQL-трассировка

При трассировке SQL собираются события, классы которых указаны в ее определении. Эти события можно выделить из трассировки или поставить в очередь по своему назначению. В качестве назначения могут выступать файлы и объекты управления (SMO)SQL Server, предоставляющие сведения трассировки приложениям, которые управляют сервером SQL Server.

Важное примечаниеВажно!

В будущей версии Microsoft SQL Server этот компонент будет удален. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется. Вместо этого используйте расширенные события.

Преимущества трассировки SQL

Для создания трассировок на экземпляре компонента Компонент SQL Server Database Engine, Microsoft SQL Server предоставляет системные хранимые процедуры на языке Transact-SQL. Эти системные хранимые процедуры можно использовать для создания трассировок вручную в рамках пользовательских приложений вместо использования приложения Приложение SQL Server Profiler. Это позволяет писать пользовательские приложения, отвечающие конкретным нуждам предприятия.

Архитектура трассировки SQL

Источником событий может быть любой источник, вызывающий события трассировки, в том числе пакеты Transact-SQL или события SQL Server, например взаимоблокировки. Дополнительные сведения о событиях см. в разделе Руководство по классам событий SQL Server. При возникновении события, класс которого содержится в определении трассировки, сведения о нем регистрируются трассировкой. Если определение трассировки содержит фильтры для класса событий, эти фильтры применяются, и сведения о событиях трассировки передается в очередь. Из очереди сведения о трассировке или записываются в файл, или используются объектами управления (SMO) сервера в таких приложениях, как Приложение SQL Server Profiler. Следующая диаграмма демонстрирует сбор событий трассировкой SQL.

Процесс трассировки событий компонента Database Engine

Терминология, связанная с трассировкой SQL

Основные понятия трассировки SQL описываются в следующих терминах.

  • Событие
    Возникновение действия в экземпляре компонента Microsoft Компонент SQL Server Database Engine.

  • Столбец данных
    Атрибут события.

  • Класс событий
    Тип события, которое можно трассировать. Класс событий содержит все столбцы данных, которые могут возвратить событие.

  • Категория событий
    Группа связанных классов событий.

  • Трассировка
    Коллекция событий и данных, возвращаемых Компонент Database Engine.

  • Трассировать
    Собирать и контролировать события в экземпляре SQL Server.

  • Определениетрассировки
    Коллекция классов событий, столбцов данных и фильтров, которые обозначают типы событий, которые нужно собирать при трассировке.

  • Фильтр
    Критерии, которые ограничивают собираемые при трассировке события.

  • Файл трассировки
    Файл, созданный при сохранении трассировки.

  • Шаблон
    В приложении Приложение SQL Server Profiler — файл, который определяет классы событий и столбцы данных, которые должны собираться при трассировке.

  • Таблица трассировки
    В приложении Приложение SQL Server Profiler таблица, создаваемая при сохранении трассировки в таблицу.

Использование столбцов данных для описания возвращаемых событий

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

Столбец данных

Номер столбца

Описание

ApplicationName 1

10

Имя клиентского приложения, установившего соединение с экземпляром SQL Server. Этот столбец заполняется значениями, передаваемыми приложением, а не отображаемым именем программы.

BigintData1

52

Значение (типа bigint), зависящее от класса событий, указанного при трассировке.

BigintData2

53

Значение (типа bigint), зависящее от класса событий, указанного при трассировке.

Binary Data

2

Двоичное значение, зависящее от класса событий, захваченного при трассировке.

ClientProcessID 1

9

Идентификатор, присвоенный компьютером сервера процессу, в котором работает клиентское приложение. Этот столбец данных заполняется в том случае, если клиент вводит идентификатор клиентского процесса.

ColumnPermissions

44

Указывает, было ли установлено разрешение на доступ к столбцу. Можно выполнить синтаксический анализ текста инструкции, чтобы определить, какие разрешения были применены к каким столбцам.

CPU

18

Объем времени ЦП (в миллисекундах), использованного событием.

Database ID 1

3

Идентификатор базы данных, указанной в инструкции USE database_name, или идентификатор базы данных по умолчанию, если для данного экземпляра инструкция USE database_nameне выполнялась. Приложение Приложение SQL Server Profiler отображает имя базы данных, если столбец ServerName захвачен при трассировке и сервер доступен. Определите идентификатор базы данных с помощью функции DB_ID.

DatabaseName

35

Имя базы данных, в которой выполняется инструкция пользователя.

DBUserName 1

40

Имя пользователя SQL Server клиента.

Duration

13

Продолжительность события (в микросекундах).

ПримечаниеПримечание

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

EndTime

15

Время окончания события. Этот столбец не заполняется для тех классов событий, которые соответствуют начинающимся событиям, для таких как SQL:BatchStarting или SP:Starting.

Error

31

Номер ошибки для данного события. Зачастую это номер ошибки, хранимый в таблице sysmessages.

EventClass 1

27

Тип захваченного класса событий.

EventSequence

51

Порядковый номер этого события.

EventSubClass 1

21

Тип подкласса событий, предоставляющий дополнительные сведения о каждом классе событий. Например, значения подкласса событий для класса событий Execution Warning представляет тип предупреждения при выполнении.

1 = ожидание запроса. Запрос должен ждать освобождения ресурсов для своего выполнения, например ресурсов памяти.

2 = истекло время ожидания запроса. При ожидании необходимых для выполнения запроса ресурсов истекло отведенное время. Этот столбец данных заполняется не для всех классов событий.

GUID

54

Значение идентификатора GUID, зависящее от класса событий, указанного при трассировке.

FileName

36

Логическое имя изменяемого файла.

Handle

33

Целочисленное значение, используемое ODBC, OLE DB или DB-Library для координации работы с сервером.

HostName 1

8

Имя компьютера, на котором выполняется клиентская программа. Заполнение этого столбца данных производится в том случае, если клиент предоставляет имя узла. Для определения имени узла используйте функцию HOST_NAME.

IndexID

24

Идентификатор индекса объекта, связанного с событием. Для определения идентификатора индекса объекта используйте столбец indid в системной таблице sysindexes.

IntegerData

25

Целочисленное значение, зависящее от класса событий, захваченного при трассировке.

IntegerData2

55

Целочисленное значение, зависящее от класса событий, захваченного при трассировке.

IsSystem

60

Указывает, в каком процессе произошло событие, в системном или в пользовательском.

1 = системный.

0 = пользовательский.

LineNumber

5

Содержит номер строки, в которой имеется ошибка. Для событий, в которых задействованы инструкции языка Transact-SQL, например SP:StmtStarting, столбец LineNumber содержит номер строки инструкции в хранимой процедуре или пакете.

LinkedServerName

45

Имя связанного сервера.

LoginName

11

Имя входа пользователя (имя входа безопасности SQL Server или учетные данные входа Windows в формате ДОМЕН\Имя_пользователя).

LoginSid 1

41

Идентификатор безопасности (SID) подключившегося пользователя. Эти сведения можно найти в представлении sys.server_principals базы данных master. Каждому имени входа для сервера присваивается уникальный идентификатор.

MethodName

47

Имя вызываемого метода OLEDB.

Mode

32

Целочисленное значение, используемое различными событиями для описания полученного или запрашиваемого ими состояния.

NestLevel

29

Целочисленное представление данных, возвращаемых функцией @@NESTLEVEL.

NTDomainName 1

7

Домен Microsoft Windows, к которому принадлежит пользователь.

NTUserName 1

6

Имя пользователя Windows.

ObjectID

22

Назначенный системой идентификатор объекта.

ObjectID2

56

Идентификатор связанного объекта или сущности, если он доступен.

ObjectName

34

Имя объекта, на который имеется ссылка.

ObjectType 2

28

Значение, представляющее тип объекта, который участвует в событии. Это значение соответствует столбцу type в таблице sysobjects.

Offset

61

Начальное смещение инструкции в пределах хранимой процедуры или пакета.

OwnerID

58

Только для событий блокировки. Тип объекта, которому принадлежит блокировка.

OwnerName

37

Имя пользователя базы данных, владеющего объектом.

ParentName

59

Имя схемы, в которой находится объект.

Разрешения

19

Целочисленное значение, отражающее тип проверяемых разрешений. Возможны следующие значения.

1 = SELECT ALL

2 = UPDATE ALL

4 = REFERENCES ALL

8 = INSERT

16 = DELETE

32 = EXECUTE (только для процедур)

4096 = SELECT ANY (как минимум один столбец)

8192 = UPDATE ANY

16384 = REFERENCES ANY

ProviderName

46

Имя поставщика OLEDB.

Reads

16

Количество операций чтения с логического диска, выполненных сервером для данного события. Эти операции чтения включают в себя все операции чтения из таблиц и буферов при выполнении данной инструкции.

RequestID

49

Идентификатор запроса, содержащего инструкцию.

RoleName

38

Имя включаемой роли приложения.

RowCounts

48

Количество строк в пакете.

ServerName 1

26

Имя отслеживаемого экземпляра SQL Server.

SessionLoginName

64

Имя входа пользователя, создавшего данный сеанс. Например, при подключении к SQL Server под именем Имя_входа1 и при выполнении инструкции под именем Имя_входа2 поле SessionLoginName будет содержать Имя_входа1, а поле LoginNameИмя_входа2. В данном столбце отображаются имена входа SQL Server и Windows.

Severity

20

Уровень серьезности события исключения.

SourceDatabaseID

62

Идентификатор базы данных, в которой существует источник объекта.

SPID

12

Идентификатор серверного процесса (SPID), который SQL Server присвоил процессу, связанному с клиентом.

SqlHandle

63

64-разрядная версия кэша, основанная на тексте нерегламентированного запроса или базы данных и на идентификаторе объекта SQL. Это значение может быть передано в функцию sys.dm_exec_sql_text(), чтобы получить связанный SQL-текст.

StartTime 1

14

Время начала события, если доступно.

Состояние

30

Код ошибки состояния.

Success

23

Указывает, было ли событие успешным. Возможны следующие значения.

1 = успешно.

0 = сбой.

Например, значение 1 означает успешную проверку разрешений, а 0 — неудавшуюся проверку.

TargetLoginName

42

Для действий с именем входа (например, при добавлении нового имени входа) — имя этого имени входа.

TargetLoginSid

43

Для действий над именем входа (например, при добавлении нового имени входа) — идентификатор SID этого имени входа.

TargetUserName

39

Для действий, выполняемых над пользователем базы данных (например, предоставление пользователю разрешений), — имя этого пользователя.

TextData

1

Текстовое значение, зависящее от класса событий, захваченного при трассировке. Однако при трассировке параметризированного запроса соответствующие переменные не отображаются со значениями типа данных в столбце TextData.

Идентификатор транзакции

4

Назначенный системой идентификатор транзакции.

Тип

57

Целочисленное значение, зависящее от класса событий, захваченного при трассировке.

Writes

17

Количество физических обращений записи на диск, выполненных сервером для данного события.

XactSequence

50

Токен, описывающий текущую транзакцию.

1. Эти столбцы данных заполняются по умолчанию для всех событий.

2 Дополнительные сведения о столбце данных ObjectType см. в разделе Столбец события ObjectType Trace.

Задачи трассировки SQL

Описание задачи

Раздел

Описывает создание и запуск трассировки с помощью хранимых процедур Transact-SQL.

Создание и запуск трассировки с помощью хранимых процедур Transact-SQL

Описывает создание и запуск трассировки вручную с помощью хранимых процедур на экземпляре Компонент SQL Server Database Engine.

Создание трассировок вручную с помощью хранимых процедур

Описывает сохранение результатов трассировки в файл, куда они записывались.

Сохранение результатов трассировки в файл

Описывает улучшение доступа к данным трассировки с помощью пространства в каталоге temp.

Улучшение доступа для трассировки данных

Описывает создание трассировки с помощью хранимых процедур.

создать трассировку (Transact-SQL)

Описывает создание фильтра, который возвращает только данные необходимые для трассируемого события, с помощью хранимых процедур.

создать фильтр трассировки (Transact-SQL)

Описывает изменение существующей трассировки с помощью хранимых процедур.

изменить существующую трассировку (Transact-SQL)

Описывает просмотр сохраненной трассировки с помощью встроенных функций.

просмотреть сохраненную трассировку (Transact-SQL)

Описывает просмотр сведений фильтра трассировки с помощью встроенных функций.

просмотреть сведения фильтров (Transact-SQL)

Описывает удаление трассировки с помощью хранимых процедур.

удалить трассировку (Transact-SQL)

Описывает сокращение потерь производительности, связанных с трассировкой.

Оптимизация трассировки SQL

Описывает уменьшение дополнительной нагрузки, возникающей при трассировке, с помощью фильтрации.

Фильтрация трассировки

Описывает сокращение количества данных, которые собирает трассировка.

Ограничение размеров файла и таблицы трассировки

Описывает два способа планирования трассировки в Microsoft SQL Server.

Планирование трассировок

См. также

Другие ресурсы

Шаблоны и разрешения приложения SQL Server Profiler

Учебник по программированию объектов SMO