我有一种情况,每天都会加载一个事实表。
有两个 SSIS 包加载此表。
1) Package1_FullLoad.dtsx - 每周日运行,完全刷新
2) Package2_DailyLoad.dtsx - 除周日外,全天运行,仅删除和加载过去 14 天的数据。
现在,完整加载包 (Package1_FullLoad.dtsx) 有一个执行 SQL 任务,截断事实表中的所有行。
然后数据流从头开始加载事实表。
在这种情况下,事实表的标识值从 1 开始并以 1 递增,这很好,没有问题。
但是,对于每日加载包(Package2_DailyLoad.dtsx),在 DELETE 语句(仅删除过去 14 天的数据)之后,在 Execute SQL Task 中,我设置了以下代码:
DBCC CHECKIDENT('dbo.FactTable', RESEED,1) DBCC CHECKIDENT('dbo.FactTable', RESEED)
然后我运行数据流来加载数据,它只插入与过去 14 天对应的数据。
假设满载后事实表有10行(以为例更好地说明情况),今天删除3行,今天要插入5行(插入和删除由今天的每日加载包完成),新的标识值必须从 8 开始,到 12 结束。相反,我看到新的标识值从 11 开始,到 15 结束。
我在 SSIS 执行 SQL 任务中看不到此 DBCC 代码有任何影响。
此 DBCC 代码在数据库端的 SSMS 中运行良好。
关于如何解决这个问题的任何想法?