回填时间表

时间:2018-03-21 20:21:16

标签: sql-server temporal temporal-tables

去年我使用自己的手卷' temporal'表。所以在2017年1月我进行了原始数据导入并执行了插入,更新和删除。 2017年2月我使用Feb原始数据文件做了同样的事情。我在截至2017年12月的所有月份都这样做了。

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

更改系统日期的其他选择吗?

1 个答案:

答案 0 :(得分:2)

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

该过程如下所述。

  1. 首先为每个表创建所有历史记录表(与使用默认历史记录表创建临时表的结构相同)。
  2. 为所有历史记录表创建索引(与使用默认历史记录表创建临时表的结构相同)。
  3. 直接填充历史记录表,包括具有所需日期时间值的SysStartTime,SysEndTime列
  4. 更改表以启用版本控制,指定历史记录表。
  5. https://docs.microsoft.com/en-us/sql/relational-databases/tables/creating-a-system-versioned-temporal-table

    (参见Alter Non-Temporal Table is System-Versioned Temporal Table paragraph)

    或者,您可以:

    1. 删除并重新创建所有已启用版本控制的表(指定您自己的(非默认)历史记录表)
    2. 运行ETL
    3. 停止版本化临时
    4. 更新历史记录表,使其具有SysStartTime / SysEndTime
    5. 的正确值
    6. 重新启用版本控制(指定现有历史记录表)