Это в задаче потока данных, да? Вы не можете изменить переменную в преобразовании скрипта, по крайней мере, во время процедуры processinputrow.
К счастью, похоже, что тип модификации, которую вы делаете, может быть выполнен - просто в разных подпрограммах.
Моя книга по бета-версии сценариев SSIS, написанная Дональдом Фармером, находится в тысяче миль от меня, поэтому, пожалуйста, простите за неточность этого кода. Важно то, что вы можете записать переменную пользователя только из события PostExecute.
public class scriptmain
inherits usercomponent
dim counter as integer
dim Valint as integer
.....
Public sub new()
counter = 0
end sub
public overrides sub input0_processintputrow(byval row as input0buffer)
counter +=1
End Sub
Public overrides sub PostExecute()
Dim vars as IDTSvariables100 = nothing
Me.variableDispenser.lockforread("User::Valint")
Me.variableDispenser.GetVariables(vars)
counter = CType (vars("User:: Valint").Value, integer)
vars.Unlock()
Me.VariableDispenser.LockoneForWrite("User::Valint", vars)
vars("User::Valint").Value = counter
vars.Unlock()
End Sub