如下图所示,我在 SQL Server 中有一个表,我通过平面文件源填充该表。我想根据下面列出的逻辑更新目标表中的两列:
- SessionID - 第一次 CSV 导入的所有行的值为 1;第二次导入的值为 2,依此类推。
- TimeCreated - CSV 导入发生的日期时间值。
我不需要关于如何编写 TSQL 代码来完成此任务的帮助。反而,我希望有人建议一种方法来将其实现为 SSIS 中的数据流任务。
预先感谢您的想法。
编辑 11/29/2012
由于到目前为止所有答案都建议在 SQL Server 端处理这个问题,所以我想向您展示我最初尝试做的事情(见下图),但它不起作用。 SSIS 将数据插入目标表后,SQL Server 中未触发触发器。
如果你们中有人能解释为什么扳机没有触发,那就太好了。
如果您能够修改目标表,则可以使用 SessionID 和 TimeCreated 的默认值来完成所有工作。 SessionID 将是一个自动递增整数,而 TimeCreated 的默认值将是 getdate() 或 gettime(),具体取决于数据类型。
现在,如果您确实需要将创建的值作为工作流程的一部分,则可以为每个值使用变量。
SessionID 是一个包变量,由执行 SQL 任务设置。只需引用结果集中的变量,然后让 SQL 确定要使用的下一个数字。不过,这存在潜在的并发问题。
通过根据系统变量 StartTime 在数据流中创建派生列,可以轻松完成 TimeCreated。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)