SSIS Input0Buffer中的脚本任务错误

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

我需要更改现有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代码:

   #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.检查新旧列对中是否存在拼写差异。