为什么我们在 SQL Server 2016 中需要时间 table,因为我们有 CDC 或 CT?

Why we require temporal table in SQL Server 2016 as we have CDC or CT?

与 SQL 服务器中的更改数据捕获或更改跟踪相比,时态表有哪些优势?

CDC 和变更跟踪确实不是为了解决历史数据问题。顾名思义,更改跟踪或 CDC 会告诉您发生了变化以及发生了什么变化。你可以选择用它做你想做的事,如果你需要保留历史数据,这可能包括将数据保存在某个地方。这包括捕获、调整(例如,向模式添加某种时间戳)、存储和管理数据以及相关流程。这是可行的,但努力是不平凡的,而且是持续的。

时态数据库提供了管理历史数据(包括查询语义)的本机功能。您必须滚动自己的潜在复杂查询才能在具有时间功能的数据库中获得相同的功能(例如,您的查询看起来像什么来回答这个问题:扇区 C 中 42 个类型 MCC2 传感器的平均温度是多少? 2016 年 8 月 28 日下午 3 点?)。这假设您已经拥有可查询格式的数据。

有很多关于为什么您应该查看时间的好文章:Why do we need a temporal database?

一些让时态表脱颖而出的注意事项。

时态表为您提供了一种简单的方法来更改现有查询以请求该查询 "run at a specific previous time" 给出当时可以看到的绝对准确的结果。

时态表具有实际时间,而不仅仅是与之关联的顺序。

临时表在 SQL 服务器的所有版本中都可用,而不仅仅是非常昂贵的企业版。

希望这给您带来价值!

马特·克里斯滕森