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


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

Изменения: 12 декабря 2006 г.

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

Во время разработки в среде Business Intelligence Development Studio можно использовать точки останова выполнения пакета, окно хода выполнения и средства просмотра данных для наблюдения за потоком данных. Однако эти возможности недоступны при выполнении уже развернутых пакетов. Основными методами устранения неполадок в развернутых пакетах являются следующие.

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

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

Перехват и обработка ошибок пакетов с помощью обработчиков событий

Обработчики событий могут реагировать на многие события, вызванные пакетами и объектами в них.

  • Создайте обработчик события для события OnError. В обработчике события с помощью задачи «Отправка почты» можно уведомить администратора о сбое, использовать задачу «Сценарий» и специальную логику для получения системных сведений, чтобы устранить неполадки или очистить временные ресурсы и неполные выходные данные. Дополнительные сведения см. в разделе Обработчики событий служб Integration Services и Создание обработчиков событий в пакетах.

Устранение проблем, связанных с внешними поставщиками данных

Многие ошибки в работе пакетов возникают при взаимодействии с внешними поставщиками данных. Однако сообщения, которые возвращают эти поставщики в службы Integration Services, часто не предоставляют достаточных сведений для устранения неполадок. В ответ на требования, связанные с устранением неисправностей, в Microsoft SQL Server 2005 с пакетом обновления 2 (SP2) были добавлены новые сообщения протоколирования, которые можно использовать для устранения неполадок взаимодействия пакета с внешними источниками данных.

  • Чтобы просматривать сообщения, связанные с устранением неисправностей, необходимо разрешить запись в журнал и выбрать событие пакета «Диагностика». Начиная с пакета обновления 2 (SP2), следующие компоненты служб Integration Services обеспечивают возможность записи сообщений в журнал перед каждым обращением к внешнему поставщику данных и после этого.

    • Диспетчер соединений OLE DB, источник OLE DB и назначение «OLE DB»
    • Диспетчер соединений ADO.NET и источник «Модуль чтения данных»
    • Задача «Выполнение SQL»
    • Преобразование «Уточняющий запрос», преобразование «Команда OLE DB» и преобразование «Медленно изменяющееся измерение»

    Новые сообщения журнала содержат название вызываемого метода. Например, эти сообщения журнала могут содержать метод Open объекта OLE DB Connection или метод ExecuteNonQuery объекта Command. Сообщения имеют следующий формат, где '%1!s!' — заполнитель для сведений метода

    ExternalRequest_pre: The object is ready to make the following external request: '%1!s!'.
    ExternalRequest_post: '%1!s!'. The external request has completed.
    

    Для устранения неполадок взаимодействия с внешним поставщиком данных просмотрите журнал, чтобы убедиться, что каждое входящее сообщение (ExternalRequest_pre) имеет соответствующее подтверждающее сообщение (ExternalRequest_post). Если соответствующее подтверждающее сообщение отсутствует, то это означает, что внешний поставщик данных не ответил так, как это ожидалось.
    В следующем примере показаны несколько образцов строк из журнала, содержащего новые сообщения:

    ExternalRequest_pre: The object is ready to make the following external request: 'ITransactionJoin::JoinTransaction'.
    ExternalRequest_post: 'ITransactionJoin::JoinTransaction succeeded'. The external request has completed.
    ExternalRequest_pre: The object is ready to make the following external request: 'IDbConnection.Open'.
    ExternalRequest_post: 'IDbConnection.Open succeeded'. The external request has completed.
    ExternalRequest_pre: The object is ready to make the following external request: 'IDbConnection.CreateCommand'.
    ExternalRequest_post: 'IDbConnection.CreateCommand finished'. The external request has completed."
    ExternalRequest_pre: The object is ready to make the following external request: 'IDbCommand.ExecuteReader'.
    ExternalRequest_post: 'IDbCommand.ExecuteReader finished'. The external request has completed."
    ExternalRequest_pre: The object is ready to make the following external request: 'IDataReader.GetSchemaTable'.
    ExternalRequest_post: 'IDataReader.GetSchemaTable finished'. The external request has completed."
    ExternalRequest_pre: The object is ready to make the following external request: 'IDataReader.Close'.
    ExternalRequest_post: 'IDataReader.Close finished'. The external request has completed."
    ExternalRequest_pre: The object is ready to make the following external request: 'IDbConnection.Close'.
    ExternalRequest_post: 'IDbConnection.Close finished'. The external request has completed."
    

Устранение неполадок недопустимых данных с помощью вывода ошибок

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

  • Захват недопустимых данных с помощью вывода ошибок. Отправляйте строки, содержащие ошибки, в отдельное назначение, например в таблицу ошибок или текстовый файл. Вывод ошибок автоматически добавляет два цифровых столбца, которые содержат номер ошибки, вызвавшей отбрасывание строки, и идентификатор столбца, в котором произошла ошибка. Дополнительные сведения см. в разделе Обработка ошибок в данных и Как настроить вывод ошибок в компоненте потока данных.
  • Добавление к выводу ошибок дополнительных сведений. Можно облегчить анализ вывода ошибок, добавив описательные сведения в дополнение к двум цифровым идентификаторам, которые предоставляет вывод ошибок.
    Добавление описания ошибки. С помощью задачи «Сценарий» можно легко найти описание ошибки. Дополнительные сведения см. в разделе Enhancing an Error Output with the Script Component.
    Добавление имени столбца, в котором возникла ошибка. С помощью компонента «Сценарий» трудно найти имя столбца, соответствующее идентификатору столбца, который сохраняется выводом ошибок. Это требует дополнительных действий. Каждый идентификатор столбца является уникальным для задачи «Поток данных», он сохраняется в пакете во время разработки. Для добавления имени столбца к выводу ошибок предлагается следующий подход:
    1. Создание таблицы уточняющих запросов имен столбцов. Создайте отдельное приложение, использующее API-интерфейс служб Integration Services для перебора всех сохраненных пакетов, всех потоков данных в пакете, всех объектов в потоке данных и всех входных и выходных данных в объекте потока данных. Это приложение должно сохранять идентификатор столбца и имя каждого столбца в таблице уточняющих запросов вместе с идентификатором родительской задачи «Поток данных» и идентификатором пакета;
    2. Добавление имени столбца к выходным данным. Добавьте к выводу ошибок преобразование «Уточняющий запрос», выполняющее поиск имени столбца в таблице уточняющих запросов, которая была создана на предыдущем шаге. Поиск может использовать идентификатор столбца в выводе ошибок, идентификатор пакета (доступный в системной переменной System::PackageID) и идентификатор задачи «Поток данных» (доступный в системной переменной System::TaskID).

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

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

  • Включите ведение журналов. Выходные данные журналов можно детализировать, выбрав только события и только объекты, сведения о которых требуется захватить. Дополнительные сведения см. в разделе Регистраторы служб Integration Services и Реализация ведения журналов в пакетах.
  • Для устранения неполадок, связанных с поставщиком, выберите событие пакета, называемое «Диагностика». В пакете обновления 2 содержатся новые сообщения журнала, которые могут помочь при устранении неполадок взаимодействия пакета с внешним источником данных. Дополнительные сведения см. в подразделе Устранение неисправностей, связанных с внешними поставщиками данных данного раздела.
  • Дополните выходные данные журналов. При обычном ведении журналов строки присоединяются к назначению при каждом выполнении пакета. Хотя каждая строка выходных данных журнала определяет пакет по имени и уникальному идентификатору, а также определяет выполнение пакета по уникальному идентификатору ExecutionID, большой объем выходных данных анализировать трудно. В следующем подходе предлагается расширить выходные данные журнала и облегчить создание отчетов:
    1. создайте родительскую таблицу, в которой регистрируется каждое выполнение пакета. В этой родительской таблице предусматривается одна строка для каждого выполнения пакета, а идентификатор ExecutionID используется для связи с дочерними записями в таблице журналов службы Integration Services. Для создания новой строки и регистрации времени начала можно использовать задачу «Выполнение SQL». Затем при завершении пакета можно обновить строку временем окончания, продолжительностью и состоянием;
    2. Добавьте к потоку данных данные аудита. Преобразование «Аудит» можно использовать для добавления к строкам в потоке данных сведений о выполнении пакета, который создал или изменил каждую строку. Преобразование «Аудит» предоставляет девять разделов сведений, в том числе PackageName и ExecutionInstanceGUID. Дополнительные сведения см. в разделе Преобразование «Аудит». Если в каждую строку в целях аудита требуется включить пользовательские данные, их можно добавить с помощью преобразования «Производный столбец». Дополнительные сведения см. в разделе Преобразование «Производный столбец»;
    3. Рассмотрите возможность захвата данных счетчика строк. Создайте отдельную таблицу для данных счетчика строк, в которой каждый экземпляр выполнения пакета определяется идентификатором ExecutionID. Используйте преобразование «Счетчик строк» для сохранения числа строк в последовательность переменных в критических точках потока данных. После окончания потока данных используйте задачу «Выполнение SQL» для вставки этой последовательности значений в строку таблицы для последующего анализа и отчета.

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

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

  • Настройка свойства DelayValidation элементов пакета, не допустимых при загрузке пакета. Свойству DelayValidation элемента пакета с недопустимой настройкой можно присвоить значение True, чтобы избежать ошибок проверки во время загрузки пакета. Например, может существовать задача «Поток данных», использующая целевую таблицу, которая не существует до тех пор, пока задача «Выполнение SQL» не создаст таблицу в процессе выполнения. Свойство DelayValidation можно включить на уровне пакета или на уровне отдельных задач или контейнеров, содержащихся в пакете.
    Свойство DelayValidation устанавливается в задаче «Поток данных», но не в отдельных компонентах потока данных. Тех же результатов можно добиться, присвоив свойству ValidateExternalMetadata отдельного компонента потока данных значение false. Однако если значение этого свойства равно false, компонент не узнает об изменениях метаданных внешних источников данных. Если свойству ValidateExternalMetadata присвоено значение true, это может помочь избежать критических препятствий, возникающих из-за блокировки базы данных, особенно при использовании пакетом транзакций.

Устранение неполадок разрешений времени выполнения

Если возникают ошибки при попытке выполнения развернутых пакетов с использованием агента служб SQL Server, их причина может заключаться в отсутствии нужных разрешений у учетных записей агента. Сведения об устранении неполадок пакетов, запускаемых из заданий агента SQL Server, см. в статье базы знаний Microsoft Пакет служб SSIS не работает при вызове пакета из шага задания агента SQL Server. Дополнительные сведения о запуске пакетов из заданий агента SQL Server см. в разделах Расписание выполнения пакетов в агенте SQL Server и Как запустить пакет с помощью задания агента SQL Server.

Устранение неполадок для 64-разрядных платформ

При возникновении на 64-разрядном сервере ошибок пакетов, которые успешно выполняются в 32-разрядном режиме или на 32-разрядных серверах, необходимо учитывать следующие распространенные проблемы. Дополнительные сведения см. в разделе Использование служб Integration Services на 64-разрядных компьютерах.

  • Некоторые поставщики данных недоступны на 64-разрядных платформах. Особенно часто в 64-разрядной версии недоступен поставщик OLE DB Microsoft Jet, который требуется для подключения к источникам данных Excel и Access.
  • Для использования сценариев на 64-разрядном компьютере их необходимо заранее скомпилировать на 32-разрядном компьютере. В пакетах, использующих задачи или компоненты «Сценарий», свойству PreCompile необходимо присвоить значение True.
  • Пакеты служб DTS не могут выполняться в 64-разрядном режиме. Если пакет использует задачу «Выполнение пакета служб DTS 2000» для выполнения пакетов служб SQL Server 2000 Data Transformation Services (DTS), необходимо выполнить этот пакет в 32-разрядном режиме. Для пакетов служб DTS не существует поддержки 64-разрядного режима.

Устранение неполадок при ошибках без описаний

Если возникает ошибка служб Integration Services, не имеющая соответствующего описания, его можно найти в справочнике Integration Services Error and Message Reference, выполнив поиск по номеру ошибки. Этот список в настоящее время не включает сведений об устранении неполадок.

См. также

Задачи

Устранение неполадок при разработке пакета

Основные понятия

Устранение неполадок производительности пакета
Устранение неполадок службы Integration Services

Справка и поддержка

Получение помощи по SQL Server 2005

Журнал изменений

Версия Журнал

12 декабря 2006 г.

Добавления
  • Добавлены сведения о том, как SQL Server 2005 с пакетом обновления 2 добавляет новые сообщения в журнал, что позволяет пользователям устранять неполадки при работе с внешними поставщиками данных.