SQL Server 2016 - 手动设置期间开始和结束日期时间
SQL Server 2016 - Period start and end datetime set manually
我正在尝试加载一些基于时间的历史数据,我希望它在 SQL Server 2016 中处于时间 table。
据我所知,周期开始和结束日期无法手动设置,它们使用系统时间设置在insert/update/delete时间。
但是,我尝试加载的文件有一个关于数据何时可用的特定日期,我希望将其反映在期间开始日期中,以便我可以相应地查询它。
有什么方法可以手动设置周期开始和结束时间吗?
您可以使用 sql 服务器管理工作室轻松禁用触发器。
- 将您的数据放在临时文件中 table。
- 修改数据。
- 禁用触发器。
- 插入数据。
- 启用触发器。
你错过了时间 tables 的要点。系统开始和结束日期仅用于一个目的;提供 table 中的内容和时间的历史记录。您对存储数据可用的日期\时间的要求是不同的。我建议您创建一个列来保存系统列之外的数据。
您可以通过禁用系统版本控制、输入数据并再次启用系统版本控制来实现。您必须注意不要插入重叠的日期,因为这会使您的历史记录 table 无法使用。
我发现这在将数据从一个系统迁移到另一个系统时非常有用。
正在将数据插入主 table
首先关闭你的系统版本控制,然后完全放弃它。
ALTER TABLE dbo.ExampleTable SET (SYSTEM_VERSIONING = OFF);
ALTER TABLE dbo.ExampleTable DROP PERIOD FOR SYSTEM_TIME;
-- 插入包含开始日期和默认结束日期的数据。
-- 添加 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));
请注意,如果列当前处于隐藏状态,这会将其删除。
正在将数据插入您的历史记录 table。
对于历史数据,您可以通过关闭系统版本控制并插入数据直接插入历史 table。
ALTER TABLE dbo.ExampleTable SET (SYSTEM_VERSIONING = OFF);
-- 将您的数据插入 dbo.ExampleTableHistory table,包含开始日期和结束日期。
-- 启用系统版本控制
ALTER TABLE dbo.ExampleTable SET (SYSTEM_VERSIONING = ON (History_Table = dbo.ExampleTableHistory));
我正在尝试加载一些基于时间的历史数据,我希望它在 SQL Server 2016 中处于时间 table。
据我所知,周期开始和结束日期无法手动设置,它们使用系统时间设置在insert/update/delete时间。
但是,我尝试加载的文件有一个关于数据何时可用的特定日期,我希望将其反映在期间开始日期中,以便我可以相应地查询它。
有什么方法可以手动设置周期开始和结束时间吗?
您可以使用 sql 服务器管理工作室轻松禁用触发器。
- 将您的数据放在临时文件中 table。
- 修改数据。
- 禁用触发器。
- 插入数据。
- 启用触发器。
你错过了时间 tables 的要点。系统开始和结束日期仅用于一个目的;提供 table 中的内容和时间的历史记录。您对存储数据可用的日期\时间的要求是不同的。我建议您创建一个列来保存系统列之外的数据。
您可以通过禁用系统版本控制、输入数据并再次启用系统版本控制来实现。您必须注意不要插入重叠的日期,因为这会使您的历史记录 table 无法使用。 我发现这在将数据从一个系统迁移到另一个系统时非常有用。
正在将数据插入主 table
首先关闭你的系统版本控制,然后完全放弃它。
ALTER TABLE dbo.ExampleTable SET (SYSTEM_VERSIONING = OFF);
ALTER TABLE dbo.ExampleTable DROP PERIOD FOR SYSTEM_TIME;
-- 插入包含开始日期和默认结束日期的数据。
-- 添加 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));
请注意,如果列当前处于隐藏状态,这会将其删除。
正在将数据插入您的历史记录 table。
对于历史数据,您可以通过关闭系统版本控制并插入数据直接插入历史 table。
ALTER TABLE dbo.ExampleTable SET (SYSTEM_VERSIONING = OFF);
-- 将您的数据插入 dbo.ExampleTableHistory table,包含开始日期和结束日期。
-- 启用系统版本控制
ALTER TABLE dbo.ExampleTable SET (SYSTEM_VERSIONING = ON (History_Table = dbo.ExampleTableHistory));