Ведение журналов в службах Integration Services (SSIS)

Область применения: среда выполнения интеграции SSIS SQL Server в Фабрика данных Azure

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

Вы можете настроить область ведения журнала, которая возникает во время выполнения пакета на сервере Служб Integration Services. Дополнительные сведения см. в разделе Включение ведения журналов при выполнении пакета на сервере служб SSIS.

Можно также включить ведение журнала при выполнении пакета из командной строки с помощью программы dtexec . Дополнительные сведения об аргументах командной строки, относящихся к ведению журналов, см. в разделе служебная программа dtexec.

Настройка ведения журналов в SQL Server Data Tools

Журналы ассоциируются с пакетами и настраиваются на уровне пакета. Каждая задача или контейнер пакета может вести журнал в любом журнале пакета. Можно включить ведение журналов задач и контейнеров пакета, даже если ведение журнала содержащего их пакета не включено. Например, можно включить ведение журнала задачи «Выполнение SQL», не включая ведение журнала ее родительского пакета. Пакет, контейнер и задача могут делать записи в нескольких журналах. Можно включить ведение журнала только для пакета либо для любой индивидуальной задачи или контейнера, содержащегося в пакете.

При добавлении журнала к пакету выберите регистратор и место расположения журнала. Поставщик журналов задает формат данных журнала: например, базу данных SQL Server или текстовый файл.

Службы Integration Services включают следующие поставщики журналов:

  • Поставщики журналов текстовых файлов, которые ведут журнальные записи в текстовых файлах ASCII в формате значений, разделенных запятыми (CSV). По умолчанию для имени файла для данного регистратора используется расширение LOG.

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

    Примечание.

    Невозможно использовать поставщик журналов SQL Server Profiler в пакете, работающем в 64-разрядном режиме.

  • Поставщик журналов SQL Server, который записывает записи журнала в таблицу sysssislog в базе данных SQL Server. Вы можете снизить производительность при входе в системную базу данных, например master или msdb. Рекомендуется создать отдельную базу данных для ведения журнала служб Integration Services.

  • Поставщик службы Windows «Журнал событий», который ведет журнальные записи в прикладном журнале службы Windows «Журнал событий» на локальном компьютере.

  • Поставщик журнала XML File, который записывает журнальные файлы в XML-файл. По умолчанию для имени файла данного регистратора используется расширение XML.

Если вы добавляете поставщика журналов в пакет или настраиваете ведение журнала программным способом, вы можете использовать ProgID или ClassID для идентификации поставщика журналов, а не использовать имена, отображаемые конструктором служб SSIS в диалоговом окне "Настройка журналов служб SSIS".

В следующей таблице перечислены идентификатор ProgID и ClassID для поставщиков журналов, которые включают службы Integration Services, и расположение журналов, в которые записываются поставщики журналов.

Регистратор ProgID ClassID: Расположение
Текстовый файл DTS.LogProviderTextFile {0A039101-ACC1-4E06-943F-279948323883} Используемый регистратором диспетчер подключения файлов определяет путь к текстовому файлу.
Профилировщик SQL Server DTS.LogProviderSQLProfiler {E93F6300-AE0C-4916-A7BF-A8D0CE12C77A} Диспетчер подключений к файлам, используемый поставщиком журналов, указывает путь к файлу, используемому SQL Server Profiler.
SQL Server DTS.LogProviderSQLServer {94150B25-6AEB-4C0D-996D-D37D1C4FDEDA} Диспетчер соединений OLE DB, используемый поставщиком журналов, указывает базу данных SQL Server, содержащую таблицу sysssislog с записями журнала.
Журнал событий Windows DTS.LogProviderEventLog {071CC8EB-C343-4CFF-8D58-564B92FCA3CF} Журнал приложений в Windows Просмотр событий содержит сведения о журнале служб Integration Services.
XML-файл DTS.LogProviderXMLFile {440945A4-2A22-4F19-B577-EAF5FDDC5F7A} Используемый регистратором диспетчер соединения файлов определяет путь к XML-файлу.

Возможно также создание пользовательских регистраторов. Дополнительные сведения см. в разделе Creating a Custom Log Provider.

Регистраторы в пакете являются элементами коллекции регистраторов пакета. При создании пакета и реализации ведения журнала с помощью конструктора служб SSIS можно просмотреть список элементов коллекции в папках поставщика журналов на вкладке обозревателя пакетов конструктора служб SSIS.

Настройте регистратор путем предоставления имени и описания для регистратора и указания диспетчера соединений, который используется данным регистратором. Поставщик журналов SQL Server использует диспетчер соединений OLE DB. Текстовый файл, SQL Server Profiler и поставщики журналов XML-файлов используют диспетчеры подключений к файлам. Регистратор журнала событий Windows не использует диспетчер соединений, потому что он напрямую обращается к журналу регистрации событий Windows. Дополнительные сведения см. в разделах Диспетчер соединений OLE DB и диспетчер подключения файлов.

Настройка ведения журналов

Чтобы настроить ведение журнала события или пользовательского сообщения, службы Integration Services предоставляет схему часто регистрируемых сведений для включения в записи журнала. Схема журнала Служб Integration Services определяет информацию, которую можно записать. Можно выбрать элементы схемы журнала для каждой записи.

Пакету и его контейнерам и задачам не требуется производить запись одних и тех же данных, и задачи одного пакета или контейнера могут производить запись различных данных. Например, пакет может производить запись сведений об операторе при запуске, одна задача может производить запись об источнике ошибки, а другая задача может производить запись о времени этой ошибки. Если пакет и его задачи, а также контейнеры используют несколько журналов, то одни и те же данные записываются во все журналы.

Можно выбрать необходимый уровень ведения журналов, указав события и данные каждого события для записи. Можно обнаружить, что одни события предоставляют более полезные сведения, чем другие. Например, можно записывать в журнал не только имена компьютеров и операторов для события PreExecute , но и все доступные данные о событии Error .

Для предотвращения использования журналами больших объемов дискового пространства или во избежание избыточного ведения журналов, которое может уменьшить производительность, можно ограничить ведение журналов, выбрав отдельные события и элементы данных для записи. Например, можно настроить журнал на запись только даты и имени компьютера для каждой ошибки.

В конструкторе служб SSIS вы определяете параметры ведения журнала с помощью диалогового окна "Настройка журналов служб SSIS".

Схема журнала

Следующая таблица описывает элементы схемы журнала.

Элемент Description
Компьютер Имя компьютера, на котором произошло событие журнала.
Оператор Удостоверение пользователя, выполнившего запуск пакета.
SourceName Имя контейнера или задачи, где произошло событие журнала.
SourceID Уникальный идентификатор пакета контейнеров «цикл по элементам», «цикл по каждому элементу» или контейнера последовательности; или задача, в которой произошло событие журнала.
ExecutionID Идентификатор GUID экземпляра выполнения пакета.

Примечание. Запуск одного пакета может создать записи в журнале с разными значениями для элемента ExecutionID. Например, при запуске пакета в SQL Server Data Tools этап проверки может создавать записи журнала с элементом ExecutionID, соответствующим SQL Server Data Tools. Однако на этапе выполнения могут быть созданы записи журнала с элементом ExecutionID, соответствующим файлу dtshost.exe. Другой пример, когда запускается пакет, содержащий задачи «Выполнение пакета», каждая из этих задач запускается в дочернем пакете. Эти дочерние пакеты могут создавать записи в журнале, имеющие отличные элементы ExecutionID от тех, что создаются в родительском пакете.
MessageText Сообщение, связанное с записью журнала.
DataBytes Байтовый массив, специфичный для записи журнала. Значение этого поля изменяется в зависимости от записи журнала.

В следующей таблице описываются три дополнительных элемента схемы журнала, которые недоступны во вкладке Подробные сведения диалогового окна Настройка журналов служб SSIS .

Элемент Description
Время начала Время начала работы контейнера или задачи.
EndTime Время прекращения работы контейнера или задачи.
DataCode Необязательное целочисленное значение, которое обычно содержит значение из перечисления DTSExecResult , показывающее результат выполнения контейнера или задачи:

0 — успешное завершение;

1 — неуспешное завершение;

2 — завершено;

3 — отменено.

Записи журнала

Службы Integration Services поддерживают записи журнала в предопределенных событиях и предоставляют пользовательские записи журнала для многих объектов Служб Integration Services. В диалоговом окне "Настройка журналов служб SSIS" в конструкторе служб SSIS перечислены эти события и пользовательские записи журнала.

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

События Description
OnError Производит запись в журнал при возникновении ошибки.
OnExecStatusChanged Вносит запись журнала, если задача (не контейнер) приостанавливается или ее выполнение возобновляется во время отладки.
OnInformation Производит запись в журнал во время проверки подлинности и выполнения исполняемого объекта.
OnPostExecute Производит запись немедленно после окончания выполнения исполняемого объекта.
OnPostValidate Производит запись в журнал при завершении проверки подлинности исполняемого объекта.
OnPreExecute Производит запись сразу перед началом выполнения исполняемого объекта.
OnPreValidate Производит запись в журнал при начале проверки подлинности исполняемого объекта.
OnProgress Производит запись в журнал в процессе выполнения исполняемого объекта.
OnQueryCancel Производит запись в журнал при любом присоединении к обработке задачи в тот момент, когда возможна отмена ее выполнения.
OnTaskFailed Производит запись в журнал при возникновении ошибки задачи.
OnVariableValueChanged Производит запись в журнал при изменении значения переменной.
OnWarning Производит запись в журнал при возникновении предупреждения.
PipelineComponentTime Производит запись в журнал по каждой фазе проверки и выполнения каждого компонента потока данных. В записях журнала указывается время обработки каждой фазы.
Диагностика

DiagnosticEx
Вносит в журнал запись, содержащую диагностические сведения.

Например, возможно вносить запись в журнал до и после каждого вызова к внешнему поставщику данных. Дополнительные сведения см. в разделе Инструменты устранения неполадок при выполнении пакетов.

Записывайте в журнал событие DiagnosticEx, если необходимо найти имена столбцов в потоке данных, которые содержат ошибки. Это событие записывает схему журнала преобразований потока данных в журнал. Потом вы сможете найти имя столбца в этой схеме журнала преобразований с помощью идентификатора столбца, записанного в выводе с ошибками. Дополнительные сведения см. в разделе Обработка ошибок в данных.

Обратите внимание, что событие DiagnosticEx не сохраняет пробелы в выводе XML, чтобы уменьшить размер журнала. Для улучшения удобочитаемости скопируйте журнал (например, в решении Visual Studio) в редактор XML, поддерживающий форматирование XML и выделение синтаксиса.

Примечание. При записи события DiagnosticEx в журнал с помощью регистратора SQL Server, отображаемый результат может быть усечен. Поле message регистратора SQL Server имеет тип nvarchar(2048). Во избежание усечения при записи события DiagnosticEx в журнал используйте другой регистратор.

В пакете и во многих задачах есть пользовательские записи журнала, которые можно включить для ведения журнала. Например, задача "Отправка почты" предоставляет запись журнала SendMailTaskBegin , которая производит запись данных в начале выполнения задачи "Отправка почты", но перед тем, как задача осуществляет отправку почты. Дополнительные сведения см. в разделе Custom Messages for Logging.

Различие копий пакета

Данные журнала содержат имя и идентификатор GUID пакета, которому принадлежит запись журнала. Для создания копии пакета путем копирования существующего пакета имя и идентификатор GUID существующего пакета тоже копируются. Это приводит к появлению двух элементов с одинаковыми именами и идентификаторами GUID, что приводит к трудностям при выделении пакетов из данных журнала.

Чтобы устранить неоднозначность, следует обновить имя и идентификатор GUID новых пакетов. В SQL Server Data Tools (SSDT) можно повторно создать GUID в свойстве идентификатора и обновить значение свойства Name в окно свойств. Можно также изменить имя и идентификатор GUID программно или с помощью команды dtutil . Дополнительные сведения см. в разделах Установка свойств пакета и Программа dtutil.

Параметры родительского ведения журналов

Часто параметры ведения журналов задач и контейнеров «цикл по элементам» и «цикл по каждому элементу», а также контейнеров последовательности соответствуют параметрам пакета или родительского контейнера. В этом случае можно настроить их для наследования настроек ведения журналов от родительского контейнера. Например, в контейнере «цикл по элементам», включающем задачу «Выполнение SQL», эта задача может использовать параметры ведения журналов, установленные для контейнера «цикл по элементам». Для использования родительских параметров ведения журналов установите для свойства контейнера LoggingMode значение UseParentSetting. Это свойство можно задать в окне свойств SQL Server Data Tools (SSDT) или в диалоговом окне "Настройка журналов служб SSIS" в конструкторе служб SSIS.

Шаблоны ведения журналов

В диалоговом окне Настройка журналов SSIS также можно создать и сохранить часто используемые параметры ведения журналов в качестве шаблонов, и затем использовать эти шаблоны во многих пакетах. Это облегчает применение согласованной стратегии ведения журналов многочисленных пакетов и изменения параметров ведения журналов пакетов путем обновления шаблонов с последующим их применением. Шаблоны хранятся в XML-файлах.

Настройка ведения журналов с помощью диалогового окна «Конфигурация журналов служб SSIS»

  1. Включите журналирование пакета и его задач. Журналирование может происходить на уровне пакета, контейнера или задачи. Можно указать различные журналы для пакетов, контейнеров и задач.

  2. Выберите регистратора и добавьте журнал пакета. Журналы могут быть созданы только на уровне пакета, а задача или контейнер должны использовать один из журналов, созданных для пакета. Каждый журнал связан с одним из следующих поставщиков журналов: текстовый файл, SQL Server Profiler, SQL Server, журнал событий Windows или XML-файл. Дополнительные сведения см. в разделе Включение средств ведения журналов в SQL Server Data Tools.

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

Настройка регистратора

Свойства могут быть заданы с помощью конструктора SSIS или программным путем.

Регистратор создается и настраивается как шаг в реализации регистрации в пакете.

После создания поставщика журналов можно просмотреть и изменить его свойства в окно свойств SQL Server Data Tools (SSDT).

Дополнительные сведения о программной установке этих свойств см. в документации по классу LogProvider .

Ведение журналов для задач потока данных

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

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

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

Вы можете найти имена столбцов, включив ведение журнала и выбрав событие DiagnosticEx . Это событие записывает схему журнала преобразований потока данных в журнал. Затем можно найти имя столбца по его идентификатору в схеме журнала преобразований. Обратите внимание, что событие DiagnosticEx не сохраняет пробелы в выводе XML, чтобы уменьшить размер журнала. Для улучшения удобочитаемости скопируйте журнал (например, в решении Visual Studio) в редактор XML, поддерживающий форматирование XML и выделение синтаксиса.

Использование события PipelineComponentTime

Возможно, самой полезной записью журнала является событие PipelineComponentTime. Эта запись журнала сообщает о времени в миллисекундах, которое каждый компонент потока данных тратит на каждом из пяти основных шагов обработки. В следующей таблице описываются эти шаги обработки. Разработчики служб Integration Services распознают эти шаги как основные методы PipelineComponent.

Этап Description
Проверить Компонент проверяется на допустимость значений свойств и параметров настройки.
PreExecute Компонент выполняет однократную обработку перед началом обработки строк данных.
PostExecute Компонент выполняет однократную обработку после обработки всех строк данных.
ProcessInput Компонент преобразования или назначения обрабатывает входящие строки данных, которые передает ему вышестоящий источник или преобразование.
PrimeOutput Компонент источника или преобразования заполняет буферы данных, которые должны передаваться в нижестоящий компонент преобразования или назначения.

При включении события PipelineComponentTime службы Integration Services регистрируют по одному сообщению для каждого шага обработки, выполняемого каждым компонентом. В следующих записях журнала отображается подмножество сообщений, которые журналы пакетов Integration Services CalculatedColumns:

The component "Calculate LineItemTotalCost" (3522) spent 356 milliseconds in ProcessInput.

The component "Sum Quantity and LineItemTotalCost" (3619) spent 79 milliseconds in ProcessInput.

The component "Calculate Average Cost" (3662) spent 16 milliseconds in ProcessInput.

The component "Sort by ProductID" (3717) spent 125 milliseconds in ProcessInput.

The component "Load Data" (3773) spent 0 milliseconds in ProcessInput.

The component "Extract Data" (3869) spent 688 milliseconds in PrimeOutput filling buffers on output "OLE DB Source Output" (3879).

The component "Sum Quantity and LineItemTotalCost" (3619) spent 141 milliseconds in PrimeOutput filling buffers on output "Aggregate Output 1" (3621).

The component "Sort by ProductID" (3717) spent 16 milliseconds in PrimeOutput filling buffers on output "Sort Output" (3719).

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

  • Источник OLE DB с именем "Извлечение данных" потратил 688 мс на загрузку данных.

  • Преобразование "Производный столбец", которое называется "Calculate LineItemTotalCost", потратило 356 мс, выполняя вычисления в входящих строках.

  • Преобразование "Статистическая обработка" с именем "Сложение Quantity и LineItemTotalCost" затратило в общей сложности 220 мс (141 на шаге PrimeOutput и 79 на шаге ProcessInput) на вычисление и передачу данных следующему преобразованию.

Включение средств ведения журналов в SQL Server Data Tools

В этой процедуре описывается, как добавлять журналы в пакет, настраивать ведение журналов на уровне пакетов и сохранять настройку ведения журналов в XML-файле. Журнал можно добавить только на уровне пакета, однако пакеты не обязаны осуществлять ведение журналов, чтобы включить ведение журналов в контейнерах, которые содержатся в этих пакетах.

Внимание

При развертывании проекта Служб Integration Services на сервере Служб Integration Services уровень ведения журнала, заданный для выполнения пакета, переопределяет ведение журнала пакетов, настроенное с помощью SQL Server Data Tools (SSDT).

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

Включение ведения журналов в пакете

  1. В SQL Server Data Tools откройте проект служб Integration Services, содержащий нужный пакет.

  2. В меню Службы SSIS нажмите Ведение журнала.

  3. Выберите регистратор из списка Тип поставщика и щелкните Добавить.

  4. В столбце Конфигурация выберите диспетчер подключений или щелкните <Создать соединение>, чтобы создать диспетчер подключений, соответствующий регистратору. В зависимости от выбранного регистратора может использоваться один из следующих диспетчеров соединений.

    • Для текстовых файлов используется диспетчер подключения файлов. Дополнительные сведения см. в разделе диспетчер подключения файлов.

    • Для SQL Server Profiler используйте диспетчер соединений с файлами.

    • Для SQL Server используйте диспетчер соединений OLE DB. Дополнительные сведения см. в разделе Диспетчер соединений OLE DB.

    • В журнале событий Windows выполнение действий не требуется. Службы SSIS автоматически создают журнал.

    • Для XML-файлов используется диспетчер подключения файлов.

  5. Для каждого журнала, используемого в пакете, повторите шаги 3 и 4.

    Примечание.

    Пакет может задействовать более одного журнала каждого типа.

  6. При необходимости установите флажок уровня пакетов, выберите журналы для ведения на уровне пакетов и перейдите на вкладку Подробности .

  7. На вкладке Подробности установите флажок События для сохранения всех записей журнала или снимите флажок События , чтобы выбрать отдельные события.

  8. При необходимости перейдите на вкладку Дополнительно , чтобы указать, какие именно данные следует вносить в журнал.

    Примечание.

    По умолчанию в журнал вносятся все данные.

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

  10. Щелкните OK.

  11. Чтобы сохранить обновленный пакет, выберите пункт Сохранить выбранные элементы в меню Файл .

Диалоговое окно "Настройка журналов служб SSIS"

Используйте диалоговое окно Настройка журналов служб SSIS для настройки параметров ведения журнала для пакета.

Выбор действия

  1. Откройте диалоговое окно «Настройка журналов служб SSIS»

  2. Настройка параметров на панели «Контейнеры»

  3. Настройка параметров на вкладке «Поставщики и журналы»

  4. Настройка параметров на вкладке «Подробные сведения»

Откройте диалоговое окно «Настройка журналов служб SSIS»

Открытие диалогового окна «Настройка журналов служб SSIS»

  • В конструкторе служб SSIS щелкните "Ведение журнала" в меню служб SSIS.

Настройка параметров на панели «Контейнеры»

Используйте панель Контейнеры в диалоговом окне Настройка журналов служб SSIS для включения записи в журнал пакета и его контейнеров.

Параметры

Контейнеры
Установите флажки в иерархическом представлении, чтобы включить запись в журнал пакета и его контейнеров:

  • Если флажок снят, контейнеры недоступны для записи в журнал. Установите флажок для включения записи в журнал.

  • Если контейнер недоступен для выбора, используются параметры записи в журнал его родителя. Данный параметр недоступен для пакетов.

  • Если флажок установлен, контейнер определяет собственные параметры записи в журнал.

Если контейнер недоступен для выбора и для него требуется задать параметры записи в журнал, дважды щелкните флажок этого контейнера. Первый щелчок снимает флажок, второй — устанавливает, позволяя выбрать регистраторы и данные, которые будут записываться в журналы.

Настройка параметров на вкладке «Поставщики и журналы»

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

Параметры

Тип поставщика
Выберите тип регистратора из списка.

Прибавить
Добавьте журнал заданного типа к коллекции регистраторов пакета.

Имя
Включите или отключите журналы для контейнеров или задач, выбранных на панели Контейнеры диалогового окна Настройка журналов служб SSIS с помощью флажков. Поле имени является редактируемым. Используйте для поставщика имя по умолчанию или введите уникальное описательное имя.

Description
Поле описания является редактируемым. Нажмите и отредактируйте описание журнала по умолчанию.

Конфигурация
Выберите диспетчер подключений из списка или щелкните <Создать соединение...>, чтобы создать его. В зависимости от типа регистратора можно настраивать диспетчер соединений OLE DB или диспетчер соединений файлов. Поставщик журналов для журнала событий Microsoft Windows не требует подключения.

См. также диспетчер Диспетчер соединений OLE DB , диспетчер подключения файлов

Удаление
Выберите регистратор и нажмите Удалить.

Настройка параметров на вкладке «Подробные сведения»

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

Параметры

События
Включить или отключить события для записи в журнал.

Description
Просмотрите описание события.

Расширенные
Выберите или удалите события для записи, выберите или удалите сведения, которые должны записываться в журнал для каждого события. Чтобы скрыть сведения, записываемые в журнал, и оставить только список событий, нажмите кнопку Основной . Записывать в журнал можно следующие сведения:

значение Описание
Компьютер Имя компьютера, на котором произошло записываемое в журнал событие.
Оператор Имя пользователя, запустившего пакет.
SourceName Имя пакета, контейнера или задачи, в котором произошло записываемое в журнал событие.
SourceID Глобальный уникальный идентификатор (GUID) пакета, контейнера или задачи, в котором произошло записываемое в журнал событие.
ExecutionID Глобальный уникальный идентификатор экземпляра выполнения пакета.
MessageText Сообщение, связанное с записью журнала.
DataBytes Зарезервировано для последующего использования.

Базовая
Выберите или удалите события для записи в журнал. Этот параметр позволяет скрыть записываемые в журнал сведения, за исключением списка событий. Если выбрать событие, то все записываемые в журнал сведения для события выбираются автоматически. Чтобы просмотреть все записываемые в журнал сведения, выберите параметр Дополнительно .

Загрузка
Укажите XML-файл, используемый в качестве шаблона настройки параметров журнала.

Сохранить
Сохраните детализацию настройки в виде шаблона в XML-файл.

Настройка ведения журналов с помощью сохраненного файла конфигурации

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

По умолчанию все контейнеры пакета используют такую же конфигурацию ведения журнала, что и родительский контейнер. Например, задачи в контейнере «цикл по каждому элементу» используют такую же конфигурацию ведения журнала, какую использует контейнер «цикл по элементам».

Настройка ведения журнала для контейнера

  1. В SQL Server Data Tools откройте проект служб Integration Services, содержащий нужный пакет.

  2. В меню Службы SSIS нажмите Ведение журнала.

  3. Разверните представление пакета в виде дерева и выберите контейнер для настройки.

  4. На вкладке Поставщики и журналы выберите журналы, которые будут использоваться для контейнера.

    Примечание.

    Создавать журналы можно только на уровне пакета. Дополнительные сведения см. в разделе Включение средств ведения журналов в SQL Server Data Tools.

  5. Перейдите на вкладку Подробности и нажмите кнопку Загрузить.

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

  7. Можно выбрать другую запись журнала, установив соответствующий ей флажок в столбце События . Нажмите кнопку Дополнительно , чтобы выбрать тип сведений для занесения в журнал для этой записи.

    Примечание.

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

  8. Чтобы сохранить обновленную версию конфигурации ведения журнала, нажмите кнопку Сохранить.

  9. Чтобы сохранить обновленный пакет, выберите пункт Сохранить выбранные элементы в меню Файл .

Включение ведения журналов при выполнении пакета на сервере служб SSIS

В этом разделе описывается настройка или изменение уровня ведения журнала пакета при запуске пакета, развернутого на сервере Служб Integration Services. Уровень ведения журнала, заданный при запуске пакета, переопределяет ведение журнала пакетов, настраиваемого во время разработки в SQL Server Data Tools (SSDT). Дополнительные сведения см. в разделе Включение средств ведения журналов в SQL Server Data Tools .

Проверка и настройка свойства уровня ведения журнала по умолчанию для сервера

  1. В экземпляре SQL Server перейдите к пакету в обозревателе объектов.

  2. Выберите Каталог служб Integration Services.

  3. Щелкните правой кнопкой мыши SSISDB и выберите Свойства.

  4. В Свойствах каталоганайдите поле группы Журналы операций и запись уровня ведения журнала по умолчанию для всей службы.

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

Кроме того, вы можете указать уровень ведения журнала для отдельного пакета с помощью одного из следующих методов. Этот раздел охватывает первый метод.

  • Настройка экземпляра выполнения пакета с помощью диалогового окна «Выполнение пакета»

  • Задание параметров для экземпляра выполнения с помощью catalog.set_execution_parameter_value (база данных SSISDB)

  • Настройка задания агента SQL Server для выполнения пакета с помощью диалогового окна «Новый шаг задания».

Задание уровня ведения журнала для пакета с помощью диалогового окна "Выполнение пакета"

  1. В SQL Server Management Studio перейдите к пакету в обозреватель объектов.

  2. Щелкните пакет правой кнопкой мыши и выберите команду Выполнить.

  3. Выберите в диалоговом окне Выполнение пакета вкладку Дополнительно .

  4. В разделе Уровень ведения журналавыберите уровень ведения журнала. В этом разделе содержится описание доступных значений.

  5. Настройте другие параметры пакета, а затем нажмите кнопку ОК , чтобы запустить пакет.

Выбор уровня ведения журнала

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

Уровень ведения журнала Description
Нет Ведение журнала выключено. Регистрируется только состояние выполнения пакета.
Базовая Записываются все события, за исключением пользовательских и диагностических событий. Это значение по умолчанию.
RuntimeLineage Собирает данные, необходимые для отслеживания сведений для журнала преобразований в потоке данных. Вы можете проанализировать эти сведения журнала преобразований, чтобы сопоставить отношение преобразований между задачами. На основе этой информации независимые поставщики программного обеспечения и разработчики могут создавать пользовательские средства сопоставления для журнала преобразований.
Производительность Регистрируются только статистика производительности, а также события OnError и OnWarning.

Отчет Производительность выполнения показывает активное и общее время компонентов потока данных пакета. Эта информация доступна, если уровень ведения журнала выполнения последнего пакета был задан как Производительность или Подробно. Дополнительные сведения см. в статье Reports for the Integration Services Server.

Представление catalog.execution_component_phases отображает время начала и время окончания для компонентов потока данных для каждого этапа выполнения. Это представление содержит данные для этих компонентов, только если в качестве уровня ведения журнала выполнения пакета установлено значение Производительность или Подробно.
Подробный Регистрируются все события, в том числе пользовательские и диагностические события.

К пользовательским относятся события, записываемые задачами служб Integration Services. Дополнительные сведения о пользовательских событиях см. в статье Custom Messages for Logging.

Пример диагностического события — событие DiagnosticEx . Когда задача "Выполнение пакета" выполняет дочерний пакет, это событие всегда записывает значения параметра, передаваемые в дочерние пакеты.

Событие DiagnosticEx , кроме того, помогает получить имена столбцов, в которых на уровне строк происходят ошибки. Это событие записывает схему журнала преобразований потока данных в журнал. Потом вы сможете найти имя столбца в этой схеме журнала преобразований с помощью идентификатора столбца, записанного в выводе с ошибками. Дополнительные сведения см. в разделе Обработка ошибок в данных.

Значение столбца сообщения для DiagnosticEx — это XML-текст. Для просмотра текста сообщения о выполнении пакета выполните запрос к представлению catalog.operation_messages (база данных SSISDB). Обратите внимание, что событие DiagnosticEx не сохраняет пробелы в выводе XML, чтобы уменьшить размер журнала. Для улучшения удобочитаемости скопируйте журнал (например, в решении Visual Studio) в редактор XML, поддерживающий форматирование XML и выделение синтаксиса.

Представление catalog.execution_data_statistics отображает строку каждый раз, когда компонент потока данных передает данные в компонент, находящийся ниже в иерархии, для выполнения пакета. Для сохранения этих данных в представлении уровень ведения журнала должен быть установлен в значение Подробно .

Создание пользовательских уровней ведения журнала и управление ими с помощью диалогового окна "Управление пользовательскими уровнями ведения журнала"

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

Совет

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

  1. Чтобы создать настраиваемые уровни ведения журнала и управлять ими, в SQL Server Management Studio щелкните правой кнопкой мыши базу данных SSISDB и выберите настраиваемый уровень ведения журнала, чтобы открыть диалоговое окно "Управление настраиваемым уровнем ведения журнала". Список Пользовательские уровни ведения журнала содержит все существующие пользовательские уровни.

  2. Чтобы создать пользовательский уровень, щелкните Создатьи введите имя и описание. На вкладках Статистика и События выберите статистические данные и события, которые требуется собирать. На вкладке События при необходимости выберите Включить контекст для определенных событий. Нажмите кнопку Сохранить.

  3. Чтобы обновить существующий пользовательский уровень ведения журнала, выберите его в списке, перенастройте, а затем нажмите кнопку Сохранить.

  4. Чтобы удалить существующий пользовательский уровень ведения журнала, выберите его в списке и нажмите кнопку Удалить.

Разрешения для пользовательских уровней ведения журнала.

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

  • Только пользователи с ролью ssis_admin или sysadmin могут создавать, обновлять и удалять пользовательские уровни ведения журнала.

Пользовательские сообщения для ведения журнала

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

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

Все записи в журнале содержат сведения о дате и времени, в том числе записи, которые автоматически формируются в начале и в конце выполнения пакета. Многие события журнала формируют несколько записей журнала. Это обычно происходит в том случае, когда событие состоит из нескольких стадий. Например, событие журнала ExecuteSQLExecutingQuery формирует три записи: одну запись после того, как задача устанавливает соединение с базой данных, вторую после того, как задача приступает к подготовке инструкции SQL, и еще одну после того, как выполнение инструкции SQL завершается.

Следующие объекты Служб Integration Services содержат пользовательские записи журнала:

Пакет

Задача «Массовая вставка»

Задача потока данных

Задача «Выполнение пакета служб DTS 2000»

Задача «Выполнение процесса»

Задача «Выполнение SQL»

Задача "Файловая система"

Задача «FTP»

Задача «Очередь сообщений»

Задача «Скрипт»

Задача «Отправка почты»

Задача «Передача базы данных»

Задача «Передача сообщений об ошибках»

Задача «Передача заданий»

Задача «Передача имен входа»

Задача «Передача главных хранимых процедур»

Задача «Передача объектов SQL Server»

Задача «Веб-служба»

Задача «Модуль чтения данных WMI»

Задача «Отслеживание событий WMI»

Задача «XML»

Записи журнала

Пакет

В следующей таблице перечислены пользовательские записи в журнале для пакетов.

Запись журнала Description
PackageStart Указывает, что выполнение пакета началось. Эта запись журнала формируется автоматически. Ее нельзя исключить.
PackageEnd Указывает, что выполнение пакета завершено. Эта запись журнала формируется автоматически. Ее нельзя исключить.
Диагностика Предоставляет сведения о настройках системы, влияющих на выполнение пакета, таких как количество одновременно исполняемых объектов.

Запись журнала Diagnostic также включает записи, сделанные до и после обращения к внешним поставщикам данных.

задача «Массовая вставка»

В следующей таблице перечислены пользовательские записи в журнале для задачи «Массовая вставка».

Запись журнала Description
DTSBulkInsertTaskBegin Указывает, что массовая вставка началась.
DTSBulkInsertTaskEnd Указывает, что массовая вставка завершена.
DTSBulkInsertTaskInfos Выводит описательные сведения об этой задаче.

Задача потока данных

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

Запись журнала Description
BufferSizeTuning Указывает, что задача потока данных изменила размер буфера. Эта запись журнала описывает причины изменения размера и фиксирует новый временный размер буфера.
OnPipelinePostEndOfRowset Означает, что компонент получил сигнал конца набора строк, который устанавливается при последнем вызове метода ProcessInput . Запись делается для каждого компонента в потоке данных, который обрабатывает ввод. Запись включает имя компонента.
OnPipelinePostPrimeOutput Указывает, что компонент завершил последний вызов метода PrimeOutput . В зависимости от потока данных, возможно формирование нескольких записей в журнале. Если компонент является источником, это означает, что компонент завершил обработку строк.
OnPipelinePreEndOfRowset Показывает, что компонент уже готов получить сигнал конца набора строк, который устанавливается при последнем вызове метода ProcessInput . Запись делается для каждого компонента в потоке данных, который обрабатывает ввод. Запись включает имя компонента.
OnPipelinePrePrimeOutput Показывает, что компонент готов получить свой вызов из метода PrimeOutput . В зависимости от потока данных, возможно формирование нескольких записей в журнале.
OnPipelineRowsSent Сообщает количество строк, предоставленных входу компонента с помощью вызова метода ProcessInput . Запись журнала включает имя компонента.
PipelineBufferLeak Предоставляет сведения обо всех компонентах, которые удерживают буферы от уничтожения после того, как диспетчер буферов завершил свое выполнение. Это означает, что ресурсы буферов не были освобождены и могут вызвать утечку памяти. Запись журнала предоставляет имя компонента и идентификатор буфера.
PipelineExecutionPlan Сообщает о плане выполнения потока данных. Предоставляет сведения о том, как буферы будут отсылаться компонентам. Эти сведения в сочетании с записью PipelineExecutionTrees описывают, что происходит в задаче.
PipelineExecutionTrees Сообщает о дереве выполнения макета в потоке данных. Планировщик подсистемы обработки потока данных использует эти деревья для построения плана выполнения потока данных.
PipelineInitialization Предоставляет сведения об инициализации задачи. Эти сведения включают каталоги, используемые для временного хранения данных большого объема типа BLOB, размер буфера по умолчанию и количество строк в буфере. В зависимости от настройки задачи потока данных, возможно формирование нескольких записей в журнале.

Задача «Выполнение пакета служб DTS 2000»

В следующей таблице перечислены пользовательские записи в журнале для задачи «Выполнение пакета служб DTS 2000».

Запись журнала Description
ExecuteDTS80PackageTaskBegin Указывает, что задача приступила к выполнению пакета служб DTS 2000.
ExecuteDTS80PackageTaskEnd Указывает, что выполнение задачи завершено.

Примечание. Пакет служб DTS 2000 может продолжить свое выполнение после завершения задачи.
ExecuteDTS80PackageTaskTaskInfo Выводит описательные сведения об этой задаче.
ExecuteDTS80PackageTaskTaskResult Сообщает результаты выполнения пакета служб DTS 2000, запущенного задачей.

Задача «Выполнение процесса»

В следующей таблице перечислены пользовательские записи в журнале для задачи «Выполнение процесса».

Запись журнала Description
ExecuteProcessExecutingProcess Предоставляет сведения о процессе выполнения исполняемого объекта, на запуск которого настроена задача.

В журнале формируются две записи. Одна из них предоставляет сведения об имени и месте выполнения исполняемого объекта, на запуск которого настроена задача, другая фиксирует выход из исполняемого объекта.
ExecuteProcessVariableRouting Предоставляет сведения о том, какие переменные направляются на вход и выходы исполняемого объекта. Данные журнала записываются для потоков stdin (вход), stdout (выход) и stderr (вывод ошибок на выходе).

Задача "Выполнение SQL"

В следующей таблице перечислены пользовательские записи журнала для задачи «Выполнение SQL».

Запись журнала Description
ExecuteSQLExecutingQuery Предоставляет сведения об этапах выполнения инструкции SQL. Записи журнала формируются в тот момент, когда задача устанавливает соединение с базой данных, когда задача приступает к подготовке инструкции SQL, и после того, как завершается выполнение инструкции SQL. Запись журнала для этапа подготовки содержит инструкцию SQL, которая используется задачей.

Задача "Файловая система"

В следующей таблице перечислены пользовательские записи журнала для задачи «Файловая система».

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

Задача «FTP»

В следующей таблице перечислены пользовательские записи журнала для задачи «FTP».

Запись журнала Description
FTPConnectingToServer Указывает, что задача инициализировала соединение с FTP-сервером.
FTPOperation Сообщает о начале FTP-операции, выполняемой задачей, и о типе этой операции.

Задача «Очередь сообщений»

В следующей таблице перечислены пользовательские записи в журнале для задачи «Очередь сообщений».

Запись журнала Description
MSMQAfterOpen Указывает, что задача завершила открытие очереди сообщений.
MSMQBeforeOpen Указывает, что задача приступила к открытию очереди сообщений.
MSMQBeginReceive Указывает, что задача приступила к получению сообщения.
MSMQBeginSend Указывает, что задача приступила к отправке сообщения.
MSMQEndReceive Указывает, что задача завершила прием сообщения.
MSMQEndSend Указывает, что задача завершила отправку сообщения.
MSMQTaskInfo Выводит описательные сведения об этой задаче.
MSMQTaskTimeOut Указывает, что время ожидания выполнения задачи истекло.

Задача «Скрипт»

В следующей таблице перечислены пользовательские записи журнала для задачи «Скрипт».

Запись журнала Description
ScriptTaskLogEntry Сообщает о результатах выполнения операции ведения журнала в скрипте. Запись журнала формируется для каждого вызова метода Log объекта Dts . Эта запись формируется в момент запуска кода. Дополнительные сведения см. в разделе ведения журналов в задаче «скрипт».

Задача «Отправка почты»

В следующей таблице перечислены пользовательские записи в журнале для задачи «Отправка почты».

Запись журнала Description
SendMailTaskBegin Указывает, что задача приступила к отправке сообщения электронной почты.
SendMailTaskEnd Указывает, что задача завершила отправку сообщения электронной почты.
SendMailTaskInfo Выводит описательные сведения об этой задаче.

Задача «Передача базы данных»

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

Запись журнала Description
SourceDB Указывает базу данных, которая копируется задачей.
SourceSQLServer Указывает компьютер, с которого копируется база данных.

Задача «Передача сообщений об ошибках»

В следующей таблице перечислены пользовательские записи в журнале для задачи «Передача сообщений об ошибках».

Запись журнала Description
TransferErrorMessagesTaskFinishedTransferringObjects Указывает, что задача завершила передачу сообщений об ошибках.
TransferErrorMessagesTaskStartTransferringObjects Указывает, что задача приступила к передаче сообщений об ошибках.

Задача «Передача заданий»

В следующей таблице перечислены пользовательские записи в журнале для задачи «Передача заданий».

Запись журнала Description
TransferJobsTaskFinishedTransferringObjects Указывает, что задача завершила передачу агент SQL Server заданий.
TransferJobsTaskStartTransferringObjects Указывает, что задача начала передавать задания агент SQL Server.

Задача «Передача имен входа»

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

Запись журнала Description
TransferLoginsTaskFinishedTransferringObjects Указывает, что задача завершила передачу имен входа.
TransferLoginsTaskStartTransferringObjects Указывает, что задача приступила к передаче имен входа.

Задача «Передача главных хранимых процедур»

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

Запись журнала Description
TransferStoredProceduresTaskFinishedTransferringObjects Указывает, что задача завершила передачу пользовательских хранимых процедур, хранящихся в базе данных master .
TransferStoredProceduresTaskStartTransferringObjects Указывает, что задача приступила к передаче пользовательских хранимых процедур, хранящихся в базе данных master .

Задача «Передача объектов SQL Server»

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

Запись журнала Description
TransferSqlServerObjectsTaskFinishedTransferringObjects Указывает, что задача завершила передачу объектов базы данных SQL Server.
TransferSqlServerObjectsTaskStartTransferringObjects Указывает, что задача начала передачи объектов базы данных SQL Server.

Задача «Веб-служба»

В следующей таблице перечислены пользовательские записи в журнале для задачи «Веб-служба».

Запись журнала Description
WSTaskBegin Задача получила доступ к веб-службе.
WSTaskEnd Задача завершила метод веб-службы.
WSTaskInfo Описательные сведения об этой задаче.

Задача «Модуль чтения данных WMI»

В следующей таблице перечислены пользовательские записи в журнале для задачи «Модуль чтения данных WMI».

Запись журнала Description
WMIDataReaderGettingWMIData Указывает, что задача приступила к чтению данных инструментария WMI.
WMIDataReaderOperation Сообщает о WQL-запросе, выполняемом задачей.

Задача «Отслеживание событий WMI»

В следующей таблице перечислены пользовательские записи в журнале для задачи «Отслеживание событий WMI».

Запись журнала Description
WMIEventWatcherEventOccurred Сообщает, что произошло событие, отслеживаемое задачей.
WMIEventWatcherTimedout Указывает, что время ожидания выполнения задачи истекло.
WMIEventWatcherWatchingForWMIEvents Указывает, что задача приступила к выполнению WQL-запроса. Эта запись содержит запрос.

Задача «XML»

В приведенной ниже таблице перечислены пользовательские записи журнала для задачи «XML».

Запись журнала Description
XMLOperation Предоставляет сведения об операции, выполняемой задачей

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