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


Шаг 3. Добавление перенаправления потока ошибок

Как было рассмотрено в предыдущей задаче, преобразование Lookup Currency Key при попытке обработать поврежденный образец неструктурированного файла не может сформировать соответствие. Вместо этого формируется ошибка. Поскольку преобразование использует установки по умолчанию для вывода ошибки, любая возникшая ошибка приводит к неудачному завершению преобразования. При неудачном завершении преобразования выполнение пакета также завершается с ошибкой.

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

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

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

Чтобы повысить информативность вывода ошибок, перед тем как пакет запишет строки с ошибками в файл, следует с помощью компонента скрипта получить доступ к API-интерфейсу служб Службы Integration Services и извлечь описание ошибки.

Настройка выходных данных ошибок

  1. В окне Область элементов SSIS разверните узел Общие и перетащите элемент Компонент скрипта в область конструктора на вкладке Поток данных. Поместите Скрипт справа от преобразования Поиск ключа валюты.

  2. В диалоговом окне Выбор типа компонента скрипта выберите Преобразование и нажмите кнопку ОК.

  3. Щелкните преобразование Поиск ключа валюты и перетащите красную стрелку на вновь созданное преобразование Скрипт, соединив эти два компонента.

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

  4. В диалоговом окне Настройка вывода ошибок в столбце Ошибка выберите Перенаправить строку и нажмите кнопку ОК.

  5. В области конструктора Поток данных щелкните элемент Компонент скрипта в только что добавленном преобразовании Компонент скрипта и измените имя на «Получение описания ошибки».

  6. Дважды щелкните преобразование Получение описания ошибки.

  7. В диалоговом окне Редактор преобразования «Скрипт» на странице Входные столбцы выберите столбец ErrorCode.

  8. На странице Входы и выходы раскройте Выход 0, выберите Выходные столбцы и нажмите кнопку Добавить столбец.

  9. Для свойства Name введите «ErrorDescription» и задайте для свойства DataType значение Unicode string [DT_WSTR].

  10. На странице Скрипт убедитесь, что свойство LocaleID имеет значение Английский (США).

  11. Нажмите кнопку Изменить скрипт, чтобы открыть среду 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);
    
        }
    
  12. В меню Построение выберите команду Построить решение, чтобы создать скрипт и сохранить изменения, а затем закройте средства VSTA.

  13. Нажмите кнопку ОК, чтобы закрыть диалоговое окно Редактор преобразования «Скрипт».

Следующие шаги

Шаг 4. Добавление назначения «Неструктурированный файл»