Задача 3. Добавление перенаправления потока ошибок
Как было рассмотрено в предыдущей задаче, преобразование «Поиск ключа валюты» при попытке обработать поврежденный образец плоского файла не может сформировать соответствие. Вместо этого формируется ошибка. Поскольку преобразование использует установки по умолчанию для вывода ошибки, любая возникшая ошибка приводит к неудачному завершению преобразования. При неудачном завершении преобразования выполнение пакета также завершается с ошибкой.
Чтобы предотвратить завершение преобразования с ошибкой, можно настроить вывод ошибок в этом компоненте таким образом, чтобы строка с ошибкой перенаправлялась на другой путь обработки. Использование отдельного пути обработки ошибок позволяет решить сразу несколько проблем. Например, можно попытаться очистить данные, а затем заново обработать строку с ошибкой. Можно также сохранить строку с ошибкой вместе с дополнительными сведениями об ошибке для последующей проверки и повторной обработки.
В этой задаче будет настроено преобразование «Поиск ключа валюты» так, чтобы все строки с ошибками перенаправлялись на вывод ошибок. Согласно ветке ошибок потока данных, эти строки будут записаны в файл.
По умолчанию два дополнительных столбца в выводе ошибок служб Integration Services, ErrorCode и ErrorColumn, содержат только числовые коды, представляющие номер ошибки и идентификатор столбца, в котором произошла ошибка. Эти числовые значения могут быть малополезны без соответствующего описания ошибки.
Чтобы повысить информативность вывода ошибок, перед тем как пакет запишет строки с ошибками в файл, следует с помощью компонента сценария получить доступ к API-интерфейсу служб Integration Services и извлечь описание ошибки.
Настройка вывода ошибок
В окне Область элементов раскройте узел Преобразования потока данных и перетащите элемент Компонент сценария в область конструктора на вкладке Поток данных. Поместите Сценарий справа от преобразования Поиск ключа валюты.
В диалоговом окне Выбор типа компонента сценария выберите Преобразование и нажмите кнопку ОК.
Щелкните преобразование Поиск ключа валюты и перетащите красную стрелку на вновь созданное преобразование Сценарий, соединив эти два компонента.
Красная стрелка отображает вывод ошибок преобразования Поиск ключа валюты. Используя красную стрелку для подключения преобразования к компоненту сценария, можно перенаправить любые ошибки обработки компоненту сценария, который обрабатывает их и отправляет по назначению.
В диалоговом окне Настройка вывода ошибок в столбце Ошибка выберите Перенаправить строку и нажмите кнопку ОК.
В области конструктора Поток данных щелкните элемент Компонент сценария в только что добавленном преобразовании Компонент сценария и измените имя на Получение описания ошибки.
Дважды щелкните преобразование Получение описания ошибки.
В диалоговом окне Редактор преобразования «Сценарий» на странице Входные столбцы выберите столбец ErrorCode.
На странице Входы и выходы раскройте Выход 0, выберите Выходные столбцы и нажмите кнопку Добавить столбец.
Для свойства Name введите ErrorDescription и установите свойство DataType в значение string [DT_WSTR].
На странице Сценарий убедитесь, что свойство LocaleID установлено в значение Английский (США).
Нажмите кнопку Изменить сценарий, чтобы открыть среду Microsoft Visual Studio для приложений (VSTA). В методе Input0_ProcessInputRow введите или вставьте следующий код:
[Visual Basic]
Row.ErrorDescription = Me.ComponentMetaData.GetErrorDescription(Row.ErrorCode)[Visual C#]
Row.ErrorDescription = this.ComponentMetaData.GetErrorDescription(Row.ErrorCode);Готовая подпрограмма должна выглядеть так:
[Visual Basic]
Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer) Row.ErrorDescription = Me.ComponentMetaData.GetErrorDescription(Row.ErrorCode)End Sub[Visual C#]
public override void Input0_ProcessInputRow(Input0Buffer Row) { Row.ErrorDescription = this.ComponentMetaData.GetErrorDescription(Row.ErrorCode); }Постройте сценарий, чтобы сохранить изменения, а затем закройте средства VSTA.
Нажмите кнопку ОК, чтобы закрыть диалоговое окно Редактор преобразования «Сценарий».