Pet*_*ter 4 sql sql-server temporal-database temporal
我正在尝试加载一些基于时间的历史数据,我希望它位于 SQL Server 2016 的时态表中。
据我所知,期间开始和结束日期无法手动设置,它们是使用系统时间在插入/更新/删除时间设置的。
但是,我尝试加载的文件具有数据可用的特定日期,我希望该日期能够反映在期间开始日期中,以便我可以相应地查询它。
有没有办法手动设置周期的开始和结束时间?
小智 6
您可以通过禁用系统版本控制、输入数据并再次启用系统版本控制来完成此操作。您必须小心不要插入重叠的日期,因为这将使您的历史记录表无法使用。我发现这在将数据从一个系统迁移到另一个系统时非常有用。
首先关闭系统版本控制,然后完全删除它。
ALTER TABLE dbo.ExampleTable SET (SYSTEM_VERSIONING = OFF);
ALTER TABLE dbo.ExampleTable DROP PERIOD FOR SYSTEM_TIME;
Run Code Online (Sandbox Code Playgroud)
-- 插入包含开始日期和默认结束日期的数据。
-- 添加您的 system_time 时间段并启用系统版本控制
ALTER TABLE dbo.ExampleTable ADD PERIOD FOR SYSTEM_TIME(StartDate, EndDate);
ALTER TABLE dbo.ExampleTable SET (SYSTEM_VERSIONING = ON(History_Table = dbo.ExampleTableHistory));
Run Code Online (Sandbox Code Playgroud)
请注意,如果列当前处于隐藏状态,这会将其删除。
对于历史数据,您可以通过关闭系统版本控制并插入数据来直接插入到历史表中。
ALTER TABLE dbo.ExampleTable SET (SYSTEM_VERSIONING = OFF);
Run Code Online (Sandbox Code Playgroud)
-- 将包含开始日期和结束日期的数据插入 dbo.ExampleTableHistory 表中。
-- 启用系统版本控制
ALTER TABLE dbo.ExampleTable SET (SYSTEM_VERSIONING = ON (History_Table = dbo.ExampleTableHistory));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6776 次 |
| 最近记录: |