我对SSIS中的脚本非常陌生,只需要使用它来更新现有表中的值。
也许我采取了错误的方法,因为我发现脚本组件用于此目的的例子非常少。如果有更好的方法来更新SQL Server中的数据,按计划使用复杂的业务逻辑,我更喜欢使用标准方法。
但是关于脚本组件,我已经看到了添加列的示例,但没有添加任何值的示例。
到目前为止,我已创建此测试脚本以执行最简单的操作:
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
Row.AutoModel = "123";
}
我运行SSIS包。我知道它运行这个方法,因为我在那里放了一个断点。 SSIS包成功完成后,我希望所有AutoModel字段成为" 123"在数据库中,但没有任何改变。我还需要做些什么来调用这些更新吗?
答案 0 :(得分:2)
SSIS有两个不同的脚本项,可能有点令人困惑。 “脚本任务”显示在“控制流设计”选项卡的工具箱中,“脚本组件”显示在“数据流”选项卡的工具箱中。
在这种情况下,您使用的是脚本组件,这是一种数据流转换。
数据流通常具有数据源,一个或多个转换以及数据目标。您希望更新数据库中的记录,而不是插入它们,因此您需要在数据流末尾使用OLE DB命令,该命令将调用存储过程。
您将编写存储过程以执行所需的更新,并且它将采用必要的参数。应将OLE DB Command对象配置为将数据流中的字段映射到存储过程的参数。
你说“也许我采取了错误的做法”。根据我的经验,脚本组件可能很有用,但最好谨慎使用。也许很多处理可以由标准组件处理(例如表查找,条件拆分,派生列和聚合)?
以这种方式使用SSIS具有很大的优势。它提供了最佳性能。开发和维护起来更快。运行程序包时,您可以查看数据流向哪些路径。您可以附加数据查看器来检查数据。