对象引用未设置为SSIS包中的对象错误的实例

时间:2013-06-11 19:22:49

标签: c# ssis

我在脚本任务中有以下代码,但是当我尝试执行脚本时,我收到一条错误消息,出现以下消息:“调用目标引发异常.--->对象引用未设置为一个对象的实例。“

我试图通过使用变量解决我的包中的死锁错误。基于Region的值,我正在尝试填充另一个变量InputRegion。

    public void Main()
    {
        String InputFile;
        int StrLen;
        Variables var = null;    
        Dts.VariableDispenser.LockOneForWrite("User::Region", ref var);
        var[0].Value = "DEFAULT";
        InputFile = (String)vars["User::InputRegion"].Value;

        if (InputFile == "Europe.txt")
            var[0].Value = "European";
        if (InputFile == "Amers.txt")
            var[0].Value = "American";
        if (InputFile == "Tokyo.txt")
            var[0].Value = "Asian";
        else        
            var[0].Value = "Unknown";

        var.Unlock();

        Dts.TaskResult = (int)ScriptResults.Success;
        }
    }
}

1 个答案:

答案 0 :(得分:2)

根据给定的信息,我可以猜到:

问题

 Variables var = null;  

您使用null值初始化变量,然后在不给出值的情况下使用它 因为你在那里使用它(可能也是你得到例外的地方)

  Dts.VariableDispenser.LockOneForWrite("User::Region", ref var);

另外

如果上面的代码行未将值设置为var,则程序可能会崩溃:

  • 那里:var[0].Value = "DEFAULT";
  • 那里:var[0].Value = "European";
  • 那里:var[0].Value = "American";
  • 那里:var[0].Value = "Asian";
  • 那里:var[0].Value = "Unknown";
  • 或者:var.Unlock();

可能的解决方案

尝试为其提供有效值而不是null,以确保问题存在。