SSIS Input0Buffer中的脚本任务错误
我需要更改现有SSIS包以添加新列。这个包有一个比较新旧值的脚本任务。它给了我以下的错误 在ScriptComponent_2dc377607ff1474a82d85cf977045c1c.vbproj.ScriptMain.Input0_进程InputRow(Input0Buffer行) 在ScriptComponent\u 2dc377607ff1474a82d85cf977045c1c.vbproj.UserComponent.Input0\u ProcessInput(Input0Buffer) 位于Microsoft.SqlServer.Dts.Pipeline.ScriptComponentHost.ProcessInput(Int32 inputID,PipelineBuffer缓冲区) 下面是VB代码:SSIS Input0Buffer中的脚本任务错误,ssis,vb.net-2010,Ssis,Vb.net 2010,我需要更改现有SSIS包以添加新列。这个包有一个比较新旧值的脚本任务。它给了我以下的错误 在ScriptComponent_2dc377607ff1474a82d85cf977045c1c.vbproj.ScriptMain.Input0_进程InputRow(Input0Buffer行) 在ScriptComponent\u 2dc377607ff1474a82d85cf977045c1c.vbproj.UserComponent.Input0\u ProcessInput(Input0Buf
#Region "Private Constants"
Private Const oldValueTag As String = "OLD"
Private Const newValueTag As String = "NEW"
Private Const nullValueTag As String = "_IsNull"
#End Region
Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
Dim column As IDTSInputColumn100
Dim newColumnName As String
Dim rowType As Type = Row.GetType()
Dim newColumnValue As String
Dim oldColumnValue As String
Dim newColumnValueNumber As Double
Dim oldColumnValueNumber As Double
Row.RecordChanged = False
'Loop through list of Input Columns per Row
For Each column In Me.ComponentMetaData.InputCollection(0).InputColumnCollection
'Reset Values to defaults
newColumnValue = ""
oldColumnValue = ""
newColumnValueNumber = 0
oldColumnValueNumber = 0
If column.Name.EndsWith(oldValueTag) Then
'Set NEW column name based on OLD
newColumnName = column.Name.Substring(0, column.Name.IndexOf(oldValueTag)) + newValueTag
'Check if our OLD value is Null - grab value
If CBool(rowType.GetProperty(column.Name & nullValueTag).GetValue(Row, Nothing)) = False Then
oldColumnValue = Trim(rowType.GetProperty(column.Name).GetValue(Row, Nothing).ToString)
End If
If CBool(rowType.GetProperty(newColumnName & nullValueTag).GetValue(Row, Nothing)) = False Then
newColumnValue = Trim(rowType.GetProperty(newColumnName).GetValue(Row, Nothing).ToString)
End If
If Double.TryParse(oldColumnValue, oldColumnValueNumber) And Double.TryParse(newColumnValue, newColumnValueNumber) Then
If Not oldColumnValueNumber = newColumnValueNumber Then
Row.RecordChanged = True
Return
End If
Else
If Not oldColumnValue = newColumnValue Then
Row.RecordChanged = True
Return
End If
End If
End If
Next
End Sub
代码中的假设是inputrow为每个旧列包含一个新列。我猜您添加了一个旧列,但没有相应的新列 您需要传递到组件,例如 Column1OLD
Column2OLD
Column3OLD
第1列新增内容
第2列新建
第3列新建
我建议: 1.检查是否传递相同数量的旧列和新列。
2.检查新旧列对之间是否存在拼写差异。有人能指导我如何检查传递空值的字段吗?此代码是否有效?有。它起作用了。但我在添加新列时出错。在“列”选项卡中,您是否单击了要更新的列以指示它们是ReadWrite?默认值为ReadOnlyTanks。这就是错误所在。2.检查新旧列对中是否存在拼写差异。