3

去年,我使用自己的手卷“临时”表。所以在 2017 年 1 月,我进行了原始数据导入并执行了插入、更新、删除。2017 年 2 月,我使用 2 月的原始数据文件做了同样的事情。我一直这样做,直到 2017 年 12 月(包括 2017 年 12 月)。

我拥有用于​​导入的所有原始月末数据文件,现在我想废弃那个垃圾手卷“临时”表解决方案,并使用微软提供的漂亮的临时表。我的问题是我需要将计算机系统日期设置回 2017 年 1 月,执行 2017 年 1 月的 ETL,将系统日期更改为 2017 年 2 月,执行 2017 年 2 月的 ETL,将系统日期更改为 2017 年 3 月,执行 2017 年 3 月的 ETL等等等等。

更改系统日期的任何替代方法?

4

1 回答 1

3

您无需更改服务器时间即可获得正确的时间。

该过程如下所述。

  1. 首先为每个表创建所有历史表(与使用默认历史表创建临时表的结构相同)。
  2. 为所有历史表创建索引(与使用默认历史表创建临时表的结构相同)。
  3. 直接填充历史表,包括具有所需日期时间值的 SysStartTime、SysEndTime 列
  4. 更改表以启用版本控制,指定历史表。

https://docs.microsoft.com/en-us/sql/relational-databases/tables/creating-a-system-versioned-temporal-table

(请参阅将非临时表更改为系统版本的临时表段落)

或者,您可以:

  1. 删除并重新创建启用版本控制的所有表(指定您自己的(非默认)历史表)
  2. 运行 ETL
  3. 暂时停止版本控制
  4. 更新历史表以具有正确的 SysStartTime/SysEndTime 值
  5. 重新启用版本控制 (指定现有的历史表)
于 2018-03-21T23:24:05.363 回答