Тип сборщика «Универсальная трассировка SQL»
Тип сборщика «Универсальная трассировка SQL» использует приложение SQL Trace для наблюдения за реляционным механизмом SQL Server. Данные трассировки могут поступать от трассировки по умолчанию или от одной или нескольких пользовательских трассировок. Этот тип сборщика зарегистрирован в представлении core.supported_collector_types.
Трассировка по умолчанию, которая управляется параметром на уровне сервера, постоянно запущена на сервере и захватывает общие нужные события. Эти события не связаны с выполнением отдельных пакетов. Это трассировка с небольшим влиянием. Пользовательские трассировки могут собирать любые события и оказывать небольшое или большое влияние, в зависимости от выбранных событий и активности сервера в момент, когда запущена трассировка. В большинстве случаев пользовательские трассировки не выполняются непрерывно.
Тип сборщика «Универсальная трассировка SQL» выполняет серверную трассировку, которая сохраняет данные в файле или в наборе файлов. Данные трассировки получаются из файлов трассировки с помощью системной функции fn_trace_gettable(). При соответствующей настройке сборщик обрабатывает данные и затем загружает их в хранилище управляющих данных.
Тип сборщика «Универсальная трассировка SQL» настроен для удаления неиспользуемых файлов и сохранения фиксированного пространства для сохраняемых данных трассировки.
Схема входных данных «Универсальная трассировка SQL»
Тип сборщика «Универсальная трассировка SQL» использует следующую схему для входных параметров.
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="DataCollectorType">
<xs:element name="SqlTraceCollector">
<xs:complexType>
<xs:sequence>
<xs:element name="Events">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="EventType">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="Event">
<xs:complexType>
<xs:attribute name="id" type="xs:unsignedByte" use="required" />
<xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="columnslist" type="xs:string" use="optional" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="id" type="xs:unsignedByte" use="optional" />
<xs:attribute name="name" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Filters">
<xs:complexType>
<xs:sequence>
<xs:element name="Filter" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="columnid" type="xs:unsignedByte" use="required" />
<xs:attribute name="columnname" type="xs:string" use="required" />
<xs:attribute name="logical_operator" type="xs:string" use="required" />
<xs:attribute name="comparison_operator" type="xs:string" use="required" />
<xs:attribute name="value" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="use_default" type="xs:boolean" />
</xs:complexType>
</xs:element>
</xs:schema>
Как видно в представленной схеме, этот тип сборщика содержит ключевые элементы, параметры хранимых процедур и специальные столбцы.
Ключевые элементы
Определение входной трассировки содержит список событий и список фильтров, определяющих трассировку.
События сгруппированы в узле EventType, который соответствует категории событий в Приложение SQL Server Profiler.
Для узла EventType атрибут ID должен соответствовать значению из системного представления sys.trace_category. Атрибут name является необязательным.
Для узла Event атрибут ID должен соответствовать значению из системного представления sys.trace_events. Атрибут name является необязательным.
Идентификаторы используются при создании сценария запуска трассировки. Имена используются для упрощения чтения и для отображения входного определения в пользовательском интерфейсе.
Узел Event содержит следующие атрибуты:
ID, name. Описан ранее.
columnslist. Список с разделителями-запятыми идентификаторов столбцов, которые выбираются для события. Если параметр columnslist не задан, то для этого события будут включены все столбцы.
Узел Filter определяет фильтр, применяемый к трассировке. Атрибуты имеют следующий смысл.
columnid. Идентификатор столбца, к которому применяется фильтр.
columnname. Имя столбца с идентификатором columnid. Используется для визуализации.
logical_operator. Оператор, применяемый к нескольким фильтрам для одного столбца. Допустимые значения — AND и OR.
comparison_operator. Оператор сравнения между значением столбца и значением фильтра. Допустимые значения: EQ, NE, GT, GE, LT, LE, LIKE и NOTLIKE.
value. Значение, используемое при сравнении. Обратите внимание, что значение фильтра и оператор сравнения должны соответствовать типу столбца, к которому применяется фильтр. Например, если столбец имеет тип string, можно использовать только операторы LIKE и NOTLIKE, а для значения фильтра допустимы только строковые значения.
Параметры хранимой процедуры
У хранимой процедуры sp_trace_create определены следующие параметры в зависимости от набора сбора или параметров сборщика.
@options. Трассировка всегда начинается с параметром переключения на файл продолжения (TRACE_FILE_ROLLOVER).
@tracefile. Размещение файлов трассировки определяется переменной CollectorTempDir. Имя файла трассировки создается объединением следующих элементов: "Сборщик_данных_" + имя_экземпляра + идентификатор_польз_набора_сбора + идентификатор_элемента_сбора + ".trc".
@maxfilesize. Всегда устанавливается в значение 5 мегабайт.
@stoptime. Не используется.
@filecount. Устанавливается в соответствии с максимальным объемом временного хранилища, допустимого для набора сбора (МБ). @filecount = предел хранилища/5.
Специальные столбцы
Для каждого события предоставляются дополнительные столбцы, даже если они не выбраны заранее во входных параметрах этого события. Это следующие столбцы.
StartTime
EndTime
EventSequence
SPID
Предыдущие столбцы определяют происхождение события и позволяют проводить сопоставление событий.
В следующем примере кода демонстрируется применение входной схемы, используемой типом сборщика «Универсальная трассировка SQL».
<?xml version="1.0" encoding="utf-8"?>
<ns:SqlTraceCollector xmlns:ns="DataCollectorType" normalize_sql="0" normalize_plans="0" normalize_procedures="0" normalize_connections="0"
normalize_default="1">
<Events>
<EventType id ="6" name="Performance">
<Event id="58" name="Auto Stats"/>
<Event id="165" name="Performance statistics"/>
<Event id="146" name="Showplan XML Statistics Profile"/>
</EventType>
<EventType id="13" name="TSQL">
<Event id="12" name="SQL:BatchCompleted" columnslist="1, 3, 9, 10, 13, 16, 17, 18"/>
<Event id="13" name="SQL:BatchStarting"/>
<Event id="41" name="SQL:StmtCompleted"/>
<Event id="166" name="SQL:StmtRecompile"/>
</EventType>
<EventType id="20" name="CLR">
<Event id="196" name="Assembly Load"/>
</EventType>
<EventType id="1" name="Cursors">
<Event id="53" name="CursorOpen"/>
<Event id="75" name="CursorRecompile"/>
<Event id="76" name="CursorImplicitConversion"/>
<Event id="78" name="CursorClose"/>
</EventType>
</Events>
<Filters>
<Filter columnid="13" columnname="Duration" logical_operator="AND" comparison_operator="GE" value="1000L"/>
<Filter columnid="10" columnname="ApplicationName" logical_operator="AND" comparison_operator="LIKE" value="Data Collector"/>
<Filter columnid="10" columnname="ApplicationName" logical_operator="AND" comparison_operator="EQ" value="NULL"/>
<Filter columnid="18" columnname="CPU" logical_operator="AND" comparison_operator="EQ" value="20"/>
<Filter columnid="14" columnname="StartTime" logical_operator="AND" comparison_operator="GT" value="2007-02-09 13:40:00"/>
</Filters>
</ns:SqlTraceCollector>
Обработка и вывод данных
Эта версия типа сборщика «Универсальная трассировка SQL» поддерживает полную загрузку данных трассировки, в которой обрабатываются события, захваченные в серверной трассировке по умолчанию.
Полная загрузка данных трассировки
При таком типе загрузки данные трассировки загружаются без обработки в одну таблицу, в которой содержатся все возможные столбцы трассировки. Данные из нескольких трассировок можно загружать в одну таблицу, что упрощает слияние данных. В дополнение к данным трассировки к каждой строке добавляется идентификатор snapshot_id, который позволяет идентифицировать источник данных и время трассировки.
Преимущества полной загрузки данных трассировки перечислены ниже.
Простой способ получить данные трассировки с сервера в базу данных, где к можно легко выполнять запросы и обрабатывать, не открывая трассировку в приложении Приложение SQL Server Profiler.
Возможность слияния и сопоставления данных из нескольких источников.
Нет потери данных из исходной трассировки. Сохраняется все, что было захвачено.
Для работы с данными можно использовать существующие инструменты, например приложение Приложение SQL Server Profiler.
Схема назначения
Схема назначения определяется как одна таблица, в которую записываются сведения о трассировках, сохраненных в хранилище данных управления, и одна таблица, которая используется для хранения всех событий трассировки из трассировок. Данные трассировок хранятся в следующих таблицах хранилища управляющих данных:
snapshots.trace_info. В этой таблице хранятся сведения обо всех трассировках, которые были переданы в экземпляр хранилища.
snapshots.trace_data. В этой таблице содержатся данные, захваченные всеми трассировками. В ней определяется столбец для каждого возможного столбца трассировки. Хранение данных таким способом позволяет сборщику данных вставлять данные в таблицу так же, как когда они поступают из системной функции fn_trace_gettable(). Оно также позволяет напрямую загружать таблицу в Приложение SQL Server Profiler.
Дополнительные сведения об этих таблицах см. в разделе Хранилище управляющих данных.
Журнал изменений
Обновления |
---|
Исправлена схема входных данных «Универсальная трассировка SQL». |
Исправлен пример кода, который демонстрирует применение входной схемы, используемой типом сборщика «Универсальная трассировка SQL». |
См. также