SSIS - 在OLE DB目标中的表中填充未映射的列

sio*_*orn 5 sql sql-server ssis etl dataflow

正如您在下图中看到的,我在SQL Server中有一个表,我通过平面文件源填充.目标表中有两列我想根据下面列出的逻辑进行更新:

  • SessionID - 第一次CSV导入中的所有行的值都为1; 第二个导入的值为2,依此类推.
  • TimeCreated - CSV导入发生时的日期时间值.

我不需要帮助如何编写TSQL代码来完成这项工作.相反,我希望有人建议在SSIS中将其实现为数据流任务的方法.

在此输入图像描述

提前感谢您的想法.

编辑11/29/2012

由于到目前为止所有的答案建议在SQL Server端处理这个问题,我想向您展示我最初尝试做的事情(见下图),但它没有用.SSIS将数据插入目标表后,触发器未在SQL Server中触发.

如果你们中的任何一个人都能解释为什么触发器没有触发,那就太好了.

在此输入图像描述

Ken*_*ski 6

如果您能够修改目标表,则可以使SessionID和TimeCreated的默认值为您完成所有工作.SessionID将是一个自动增量整数,而TimeCreated的默认值将是getdate()或gettime(),具体取决于数据类型.

现在,如果您确实需要将值作为工作流程的一部分创建,则可以为每个值使用变量.

SessionID是一个包变量,由执行SQL任务设置.只需引用结果集中的变量,让SQL确定要使用的下一个数字.但是,这可能存在潜在的并发问题.

通过基于系统变量StartTime在数据流中创建派生列,可以轻松完成TimeCreated.