У меня есть пакет с кучей Oledb Destinations, используя SSIS 2016, который должен показывать точный столбец, который сгенерировал ошибку. ErrorColumn показывает (0) ноль, поэтому я Я не могу захватить столбец, который сгенерировал ошибку.SSIS 2016 - ErrorColumn равен 0 (ноль)
Использование сценария ниже (с кодом, который назначает «Неизвестный столбец», но это не помогает, он просто избегает скрипт обязательно):
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
//IDTSComponentMetaData130 componentMetaData = ComponentMetaData as IDTSComponentMetaData130;
//var component130 = this.ComponentMetaData as IDTSComponentMetaData130;
//if (component130 != null)
//{
// System.Windows.Forms.MessageBox.Show(component130.GetIdentificationStringByID(Row.ErrorColumn));
// Row.ErrorColumnName = component130.GetIdentificationStringByID(Row.ErrorColumn);
//}
IDTSComponentMetaData130 componentMetaData = ComponentMetaData as IDTSComponentMetaData130;
if (componentMetaData != null)
{
//
if (Row.wkpErrorColumn != 0)
Row.wkpErrorColumnName = componentMetaData.GetIdentificationStringByID(Row.wkpErrorColumn);
else
Row.wkpErrorColumnName = "Unknown column";
}
else
{
Row.wkpErrorColumnName = "Cannot determine";
}
Row.wkpErrorDescription = ComponentMetaData.GetErrorDescription(Row.wkpErrorCode);
}
Я не использовал этот 'componentMetaData.GetIdentificationStringByID', но, возможно, ID - это идентификатор на основе 0 вместо 1 на основе, в этом случае вы не захотите проверять' Row.wkpErrorColumn! = 0', а скорее 'Row.wkpErrorColumn! = Null', по крайней мере, это сравнение в нижней части этой страницы: https: //blogs.msdn.m icrosoft.com/ssis/2015/11/27/error-column-improvements-for-ssis-data-flow-updated-for-rc2/ – Matt
Перенаправить ошибки и добавить средство просмотра данных. Последние версии SSDT декодируют код ошибки и отображают фактическое сообщение об ошибке –
В этом проблема. Я добавил DataViewer, но он показывает, что столбец равен нулю. –