Занятие 4-3. Добавление перенаправления потока ошибок
Область применения: среда выполнения интеграции SSIS SQL Server в Фабрика данных Azure
В предыдущей задаче преобразование "Поиск ключа валюты" при попытке обработки поврежденного образца неструктурированного файла не может сформировать соответствие, из-за чего выдается ошибка. Поскольку преобразование использует установки по умолчанию для вывода ошибки, любая возникшая ошибка приводит к неудачному завершению преобразования. При неудачном завершении преобразования выполнение пакета также завершается с ошибкой.
Чтобы предотвратить завершение преобразования с ошибкой, можно настроить вывод ошибок в этом компоненте таким образом, чтобы строка с ошибкой перенаправлялась на другой путь обработки. Использование отдельного пути обработки ошибок предоставляет дополнительные возможности. Например, можно очистить данные, а затем заново обработать строку с ошибкой. Кроме того, можно сохранить строку с ошибкой вместе со сведениями об ошибке для последующей проверки и повторной обработки.
В этой задаче вы настраиваете преобразование "Поиск ключа валюты" так, чтобы все строки с ошибками перенаправлялись на вывод ошибок. В ветке ошибок потока данных Integration Services записывают эти строки в файл.
По умолчанию два дополнительных столбца в выводе ошибок Integration Services, ErrorCode и ErrorColumn, содержат только числовой код ошибки и идентификатор столбца, в котором возникла ошибка. В этой задаче перед тем, как пакет запишет строки с ошибками в файл, следует с помощью компонента скрипта получить доступ к API Integration Services и извлечь описание ошибки.
Настройка вывода ошибок
На панели элементов служб SSIS разверните узел Common и перетащите компонент скрипта на область конструктора вкладки Поток данных. Поместите скрипт справа от преобразования "Ключ валюты подстановки".
В диалоговом окне Выбор типа компонента скрипта выберите Преобразование и нажмите кнопку ОК.
Чтобы соединить эти два компонента, щелкните преобразование Поиск ключа валюты и перетащите его красную стрелку на вновь созданное преобразование Скрипт.
Красная стрелка отображает вывод ошибок преобразования Поиск ключа валюты . Используя красную стрелку для подключения преобразования к компоненту скрипта, можно перенаправить любые ошибки обработки в компонент скрипта, который обрабатывает их и отправляет по назначению.
В диалоговом окне Настройка вывода ошибок в столбце Ошибка выберите Перенаправить строкуи нажмите кнопку ОК.
В области конструктора Поток данных щелкните имя Компонент скрипта в только что добавленном преобразовании ScriptComponent и измените это имя на Получение описания ошибки.
Дважды щелкните преобразование Получение описания ошибки .
В диалоговом окне Редактор преобразования «Скрипт» на странице Входные столбцы выберите столбец ErrorCode .
На странице Входы и выходы разверните Выход 0, выберите Выходные столбцы и нажмите кнопку Добавить столбец.
Для свойства Name введите ErrorDescription и задайте для свойства DataType значение Unicode string [DT_WSTR].
На странице Скрипт убедитесь в том, что свойство LocaleID имеет значение Английский (США).
Нажмите Изменить скрипт, чтобы открыть среду Microsoft Visual Studio Tools for Applications (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.
Нажмите кнопку ОК, чтобы закрыть диалоговое окно Редактор преобразования "Скрипт".