Трассировка SQL
Применимо к:SQL Server
При трассировке SQL собираются события, классы которых указаны в ее определении. Эти события можно выделить из трассировки или поставить в очередь по своему назначению. Назначение может быть файлом или объектами управления SQL Server (SMO), которые могут использовать сведения трассировки в приложениях, управляющих SQL Server.
Внимание
SQL Trace и SQL Server Profiler устарели. Пространство имен Microsoft.SqlServer.Management.Trace, которое содержит объекты трассировки Microsoft SQL Server и Replay, также устаревшее.
Эта функция будет удалена в будущей версии SQL Server. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется.
Вместо этого используйте расширенные события. Дополнительные сведения о расширенных событиях см. в статьях Краткое руководство. Расширенные события в SQL Server и Использование профилировщика XEvent для SSMS.
Преимущества трассировки SQL
Microsoft SQL Server предоставляет хранимые процедуры Transact-SQL для создания трассировок на экземпляре ядро СУБД SQL Server. Эти системные хранимые процедуры можно использовать из собственных приложений для создания трассировок вручную, а не с помощью SQL Server Profiler. Это позволяет писать пользовательские приложения, отвечающие конкретным нуждам предприятия.
Архитектура трассировки SQL
Источники событий могут быть любым источником, который создает событие трассировки, например пакеты Transact-SQL или события SQL Server, например взаимоблокировки. Дополнительные сведения о событиях см. в разделе SQL Server Event Class Reference. При возникновении события, класс которого содержится в определении трассировки, сведения о нем регистрируются трассировкой. Если определение трассировки содержит фильтры для класса событий, эти фильтры применяются, и сведения о событиях трассировки передается в очередь. В очереди данные трассировки записываются в файл или могут использоваться SMO в приложениях, таких как SQL Server Profiler. Следующая диаграмма демонстрирует сбор событий трассировкой SQL.
Терминология, связанная с трассировкой SQL
Основные понятия трассировки SQL описываются в следующих терминах.
Событие
Вхождение действия в экземпляре ядро СУБД Microsoft SQL Server.
Столбец данных
Атрибут события.
Класс событий
Тип события, которое можно трассировать. Класс событий содержит все столбцы данных, которые могут возвратить событие.
Категория событий
Группа связанных классов событий.
Трассировка
Коллекция событий и данных, возвращаемых компонентом Database Engine.
Трассировать
Сбор и мониторинг событий в экземпляре SQL Server.
Определение трассировки
Коллекция классов событий, столбцов данных и фильтров, которые обозначают типы событий, которые нужно собирать при трассировке.
Фильтр
Критерии, которые ограничивают собираемые при трассировке события.
Файл трассировки
Файл, созданный при сохранении трассировки.
Шаблон
В SQL Server Profiler файл, определяющий классы событий и столбцы данных, собираемые в трассировке.
Таблица трассировки
В SQL Server Profiler таблица, созданная при сохранении трассировки в таблице.
Использование столбцов данных для описания возвращаемых событий
Приложение трассировки SQL использует столбцы данных в результатах трассировки для описания событий, возвращенных во время работы трассировки. В следующей таблице описываются столбцы данных SQL Server Profiler, которые являются теми же столбцами данных, что и для трассировки SQL, а также столбцы, выбранные по умолчанию.
Столбец данных | Номер столбца | Description |
---|---|---|
* ApplicationName | 10 | Имя клиентского приложения, создавшего подключение к экземпляру SQL Server. Этот столбец заполняется значениями, передаваемыми приложением, а не отображаемым именем программы. |
BigintData1 | 52 | Значение (типаbigint ), зависящее от класса событий, указанного при трассировке. |
BigintData2 | 53 | Значение (типаbigint ), зависящее от класса событий, указанного при трассировке. |
* Binary Data | 2 | Двоичное значение, зависящее от класса событий, захваченного при трассировке. |
* ClientProcessID | 9 | Идентификатор, присвоенный компьютером сервера процессу, в котором работает клиентское приложение. Этот столбец данных заполняется в том случае, если клиент вводит идентификатор клиентского процесса. |
ColumnPermissions | 44 | Указывает, было ли установлено разрешение на доступ к столбцу. Можно выполнить синтаксический анализ текста инструкции, чтобы определить, какие разрешения были применены к каким столбцам. |
* ЦП | 18 | Объем времени ЦП (в миллисекундах), использованного событием. |
Идентификатор базы данных | 3 | Идентификатор базы данных, указанной в инструкции USE database_name , или базы данных по умолчанию, если для данного экземпляра инструкция USE database_nameне выполнялась. Sql Server Profiler отображает имя базы данных, если столбец данных ServerName фиксируется в трассировке и сервер доступен. Определите значение для базы данных, используя функцию DB_ID. |
DatabaseName | 35 | Имя базы данных, в которой выполняется инструкция пользователя. |
DBUserName | 40 | Имя пользователя SQL Server клиента. |
* Длительность | 13 | Продолжительность события (в микросекундах). Сервер сообщает о длительности события в микросекундах (одна миллионная доля секунды, 10-6с) и о количестве времени ЦП, затраченного на событие, в миллисекундах (одна тысячная доля секунды, 10-3с). Графический пользовательский интерфейс SQL Server Profiler отображает столбец "Длительность" в миллисекундах по умолчанию, но при сохранении трассировки в файле или таблице базы данных значение столбца "Длительность" записывается в микросекунды. |
* EndTime | 15 | Время окончания события. Этот столбец не заполняется для тех классов событий, которые соответствуют начинающимся событиям, для таких как SQL:BatchStarting или SP:Starting. |
Ошибка | 31 | Номер ошибки для данного события. Зачастую это номер ошибки, хранимый в таблице sysmessages. |
* EventClass | 27 | Тип захваченного класса событий. |
EventSequence | 51 | Порядковый номер этого события. |
EventSubClass | 21 | Тип подкласса событий, предоставляющий дополнительные сведения о каждом классе событий. Например, значения подкласса событий для класса событий Execution Warning представляет тип предупреждения при выполнении. 1 = ожидание запроса. Запрос должен ждать освобождения ресурсов для своего выполнения, например ресурсов памяти. 2 = время ожидания запроса. Время ожидания выполнения запроса при ожидании выполнения необходимых ресурсов. Этот столбец данных заполняется не для всех классов событий. |
GUID | 54 | Значение идентификатора GUID, зависящее от класса событий, указанного при трассировке. |
FileName | 36 | Логическое имя изменяемого файла. |
Дескриптор | 33 | Целочисленное значение, используемое ODBC, OLE DB или DB-Library для координации работы с сервером. |
HostName | 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 | 41 | Идентификатор безопасности (SID) подключившегося пользователя. Эти сведения можно найти в представлении sys.server_principals базы данных master . Каждому имени входа для сервера присваивается уникальный идентификатор. |
MethodName | 47 | Имя вызываемого метода OLEDB. |
Режим | 32 | Целочисленное значение, используемое различными событиями для описания полученного или запрашиваемого ими состояния. |
NestLevel | 29 | Целочисленное представление данных, возвращаемых функцией @@NESTLEVEL. |
NTDomainName | 7 | Домен Microsoft Windows, к которому принадлежит пользователь. |
* NTUserName | 6 | Имя пользователя Windows. |
ObjectID | 22 | Назначенный системой идентификатор объекта. |
ObjectID2 | 56 | Идентификатор связанного объекта или сущности, если он доступен. |
ObjectName | 34 | Имя объекта, на который имеется ссылка. |
**ObjectType | 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 | 26 | Имя отслеживаемого экземпляра SQL Server. |
SessionLoginName | 64 | Имя входа пользователя, который инициировал сеанс. Например, если вы подключаетесь к SQL Server с помощью Login1 и выполняете инструкцию login2, SessionLoginName отображает Login1, а Имя входа отображает Login2. В этом столбце данных отображаются имена входа SQL Server и Windows. |
Уровень серьезности | 20 | Уровень серьезности события исключения. |
SourceDatabaseID | 62 | Идентификатор базы данных, в которой существует источник объекта. |
* SPID | 12 | Идентификатор процесса сервера (SPID), назначенный SQL Server процессу, связанному с клиентом. |
SqlHandle | 63 | 64-разрядная версия хэша, основанная на тексте нерегламентированного запроса или базы данных и на идентификаторе объекта SQL. Это значение можно передать в функцию sys.dm_exec_sql_text() , чтобы получить связанный текст SQL. |
* StartTime | 14 | Время начала события, если доступно. |
Штат | 30 | Код ошибки состояния. |
Успешно | 23 | Указывает, было ли событие успешным. Доступные значения: 1 = успешное завершение. 0 = неуспешное завершение. Например, значение 1 означает успешную проверку разрешений, а 0 — неудавшуюся проверку. |
TargetLoginName | 42 | Для действий с именем входа (например, при добавлении нового имени входа) — имя этого имени входа. |
TargetLoginSid | 43 | Для действий над именем входа (например, при добавлении нового имени входа) — идентификатор SID этого имени входа. |
TargetUserName | 39 | Для действий, выполняемых над пользователем базы данных (например, предоставление пользователю разрешений), — имя этого пользователя. |
* TextData | 1 | Текстовое значение, зависящее от класса событий, захваченного при трассировке. Однако при трассировке параметризированного запроса соответствующие переменные не отображаются со значениями типа данных в столбце TextData . |
Transaction ID | 4 | Назначенный системой идентификатор транзакции. |
Тип | 57 | Целочисленное значение, зависящее от класса событий, захваченного при трассировке. |
* Writes | 17 | Количество физических обращений записи на диск, выполненных сервером для данного события. |
XactSequence | 50 | Токен, описывающий текущую транзакцию. |
* Эти столбцы данных заполняются по умолчанию для всех событий.
** Дополнительные сведения о столбце данных ObjectType см. в столбце событий ObjectType Trace.
Задачи трассировки SQL
Описание задачи | Раздел |
---|---|
Описывает создание и запуск трассировки с помощью хранимых процедур Transact-SQL. | Создание и запуск трассировки с помощью хранимых процедур Transact-SQL |
Описывает создание трассировок вручную с помощью хранимых процедур в экземпляре SQL Server ядро СУБД. | Создание трассировок вручную с помощью хранимых процедур |
Описывает сохранение результатов трассировки в файл, куда они записывались. | Сохранение результатов трассировки в файл |
Описывает улучшение доступа к данным трассировки с помощью пространства в каталоге temp . | Улучшение доступа к данным трассировки |
Описывает создание трассировки с помощью хранимых процедур. | Создание трассировки (Transact-SQL) |
Описывает создание фильтра, который возвращает только данные необходимые для трассируемого события, с помощью хранимых процедур. | Создание фильтра трассировки (Transact-SQL) |
Описывает изменение существующей трассировки с помощью хранимых процедур. | Изменение существующей трассировки (Transact-SQL) |
Описывает просмотр сохраненной трассировки с помощью встроенных функций. | Просмотр сохраненной трассировки (Transact-SQL) |
Описывает просмотр сведений фильтра трассировки с помощью встроенных функций. | Просмотр сведений о фильтрах (Transact-SQL) |
Описывает удаление трассировки с помощью хранимых процедур. | Удаление трассировки (Transact-SQL) |
Описывает сокращение потерь производительности, связанных с трассировкой. | Оптимизация трассировки SQL |
Описывает уменьшение дополнительной нагрузки, возникающей при трассировке, с помощью фильтрации. | Фильтрация трассировки |
Описывает сокращение количества данных, которые собирает трассировка. | Ограничение размеров файла и таблицы трассировки |
Описывает два способа планирования трассировки в Microsoft SQL Server. | Планирование трассировок |
См. также
Шаблоны и разрешения приложения SQL Server Profiler
Учебник по программированию управляющих объектов SQL Server (SMO)
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по