没有.SQL Server没有等效功能.
我知道这个问题已经很老了,但是对于SQL Server 2016,Temporal Tables 是一个功能:https : //docs.microsoft.com/en-us/sql/relational-databases/tables/temporal-tables
也许它可以帮助其他人,以防他们来到这个主题(搜索类似于 Oracle 闪回特性的东西)
启用时态表后,您可以查询表 AS OF 特定时间戳并检索该特定时间戳中的行,就像您在 Oracle 中所做的那样:
(SELECT * FROM EMPLOYEE AS OF TIMESTAMP ('13-SEP-04 8:50:58','DD-MON-YY HH24: MI: SS')
Run Code Online (Sandbox Code Playgroud)
SQL Server 中 SYSTEM_VERSIONING=ON 表的等效查询将是:
SELECT * FROM EMPLOYEE FOR SYSTEM_TIME AS OF '2004-09-01 08:50:58'
Run Code Online (Sandbox Code Playgroud)
要为包含行的现有表启用 SYSTEM_VERSIONING,您可以使用以下脚本:
ALTER TABLE [dbo].[TABLE] ADD [SysStartTime] datetime2(0) GENERATED ALWAYS AS ROW START HIDDEN NOT NULL CONSTRAINT DF_Inventory_SysStartTime DEFAULT '1900-01-01 00:00:00', [SysEndTime] datetime2(0) GENERATED ALWAYS AS ROW END HIDDEN NOT NULL CONSTRAINT DF_Inventory_SysEndTime DEFAULT '9999-12-31 23:59:59', PERIOD FOR SYSTEM_TIME ([SysStartTime], [SysEndTime])
ALTER TABLE [dbo].[TABLE] SET (SYSTEM_VERSIONING = ON);
Run Code Online (Sandbox Code Playgroud)
启用 SYSTEM_VERSIONING 后,历史记录表将显示在您启用版本控制的表下:
从表中删除 SYSTEM_VERSIONING:
ALTER TABLE [dbo].[TABLE] SET (SYSTEM_VERSIONING = OFF);
ALTER TABLE [dbo].[TABLE] DROP PERIOD FOR SYSTEM_TIME;
ALTER TABLE [dbo].[TABLE] DROP COLUMN [SysStartTime], [SysEndTime];
Run Code Online (Sandbox Code Playgroud)
有关更多信息,您可以访问以下链接(或之前引用的 Microsoft 官方文档):http : //www.sqlservercentral.com/articles/SQL+Server+2016/147087/
| 归档时间: |
|
| 查看次数: |
7884 次 |
| 最近记录: |