SSIS数据流任务错误:未将对象引用设置为对象的实例

时间:2018-02-12 15:14:54

标签: sql-server ssis etl script-component

我正在尝试创建一个包含多个数据流任务的包。这些任务本质上非常相似,但包含相当重要的差异。

我尝试复制任务,然后更改需要更改的内容。

当我单独运行任务时它运行正常,但是当我运行它与包中的所有其他任务时,我得到以下错误:

  

对象引用未设置为对象的实例。 at   ScriptMain.Input0_ProcessInputRow(Input0Buffer Row)at   UserComponent.Input0_ProcessInput(Input0Buffer Buffer)at   UserComponent.ProcessInput(Int32 InputID,String InputName,   PipelineBuffer Buffer,OutputNameMap OutputMap)at   Microsoft.SqlServer.Dts.Pipeline.ScriptComponent.ProcessInput(的Int32   InputID,PipelineBuffer buffer)at   Microsoft.SqlServer.Dts.Pipeline.ScriptComponentHost.ProcessInput(的Int32   inputID,PipelineBuffer buffer)

不是最友好的错误消息。

谁能告诉我这是什么以及如何解决?我假设有一些变量或其他属性正在重复,但是哪一个?

请注意,多个数据流任务中的许多列都具有相同的列名。

3 个答案:

答案 0 :(得分:0)

使用vs 2012中的程序包运行报告来确定哪个DFT任务包失败。 使用包的视图代码选项来查看是否所有DFT任务都有正确的输入。

答案 1 :(得分:0)

我最终想通了。原因是需要显式声明第二级对象。

我有

public class Level2
{
    public string Somevalue { get; set; }
}
public class RootAttributes
{
    public Level2 lvl2 { get; set; }
    public string Somevalue2 { get; set; }
}

应该是

public class Level2
{
    public string Somevalue { get; set; }
}
public class RootAttributes
{
    public Level2 lvl2 = new Level2;
    public string Somevalue2 { get; set; }
}

奇怪的是,顶级方法在其他几个地方有效。

答案 2 :(得分:0)

我的发送邮件任务遇到了这个问题。

因为我在电子邮件正文中使用了文件连接,所以我必须创建一个新的文件连接并且它工作正常。