【发布时间】:2015-01-28 14:53:43
【问题描述】:
我在 SQL Server 2008 中工作。我需要一种方法来跟踪对给定数据导入操作的所有数据库表中的行插入。所有行插入都是通过 SSIS 数据流任务(从文本文件导入)完成的。
当我运行我的 SSIS 包时,我需要生成一个唯一的 ID,以区分给定的运行和同一包的后续运行(可能包括关闭包)。
例如,假设这是我第一次运行我的 SSIS 包。文本文件中的所有行都位于我数据库中相应的表中。因为这是第一次“加载”,所以我生成了一个 ID 1。这个 ID 需要列在导入的每一行上。 (我认为这最好通过在每个表中添加一个新列来保存此 ID 来实现。)我关闭了我的 SSIS 包。我再次打开包并运行另一个负载。 (不会更新或删除任何行。导入将始终是插入/追加操作。)这一次,生成的加载 ID 为 2。此 ID 将添加到在第二次加载期间插入的所有行中。
我怎样才能做到这一点?
【问题讨论】:
-
您不确定哪些部分?您似乎确定了大部分需要完成的工作。
-
好吧,我不知道如何在 SQL Server 或 SSIS 中生成负载 ID。此外,即使在我关闭 SSIS 包之后,我也需要增加此 ID 的计数器。在导入操作期间我将如何填充此 ID?
-
我想到了几种方法。首先,如果您拥有的只是一个毫无意义的计数器,那么它对您的作用并不大。我认为像审计表这样的东西会更有用。该表可能包含执行包的日期时间或您可能想要跟踪的任何内容。然后您的包可以在该表中插入一行并从新创建的行中获取标识值并使用它。如果您只想要一个数值,请查看使用序列(假设您在 2012 年或之后)。
标签: sql-server sql-server-2008 ssis