Ошибка в пакете служб SSIS, когда компонент сценария пытается извлечь errorCode и errorColumn- [SSIS.Pipeline] Ошибка: не существует объекта с идентификатором 0 - PullRequest
2 голосов
/ 24 мая 2019

У меня есть пакет служб SSIS, в котором я использую компонент сценария в DFT, чтобы извлечь столбец ошибок и описание ошибки из вставки в таблицу SQL.

Мой код ниже. Однако после выполнения DFT (он завершает все свои шаги) пакет не может перейти к следующей задаче DFT с ошибкой

[SSIS.Pipeline] Ошибка: не существует объекта с идентификатором 0.

Мой код ниже для компонента

Я попытался удалить компонент скрипта и заново создать его, но это не сработало

public override void Input0_ProcessInputRow(Input0Buffer Row)
{
    Row.ErrorDescription = this.ComponentMetaData.GetErrorDescription(Row.ErrorCode);
    IDTSComponentMetaData130 componentMetaData = this.ComponentMetaData as IDTSComponentMetaData130;
    Row.ErrorColumnName = componentMetaData.GetIdentificationStringByID(Row.ErrorColumn);
}

Описание ошибки и столбец ошибок попадают в таблицу ошибок, но пакет не продолжается.

1 Ответ

0 голосов
/ 24 мая 2019

Я использую компонент сценария в DFT для извлечения столбца ошибки и описания ошибки из вставки в таблицу SQL.

Если вы читаете данные с выхода Error целевого объекта OLE DB и используете опцию Table or View - Fast Load в качестве Access Mode, вы не сможете получить имя столбца, так как выполняете операцию массовой вставки.

Если вам нужно получить имя столбца ошибок, который вы не можете использовать Fast Load, вам нужно выполнить построчную вставку, выбрав Table or View режим доступа, который снижает производительность вставки.

Если вы не читаете из вывода об ошибке назначения OLE DB, обратитесь к следующей статье для пошагового руководства:

...