Jon*_*yce 10 sql-server temporal-tables sql-server-2016
我正在尝试为包含数据的 SQL Server 2016 数据库中的某些现有表启用系统版本控制。我正在遵循Microsoft 的这些说明。
其中一张表如下所示:
CREATE TABLE [dbo].[ClientBeacon](
[ClientId] [int] NOT NULL,
[BeaconId] [int] NOT NULL,
[FromDate] [datetime] NOT NULL,
[ToDate] [datetime] NULL,
[Deleted] [bit] NOT NULL,
[ModifiedByUserId] [nvarchar](128) NOT NULL,
[ModifiedOn] [datetime] NOT NULL,
[Timestamp] [timestamp] NOT NULL,
CONSTRAINT [PK_ClientBeacon] PRIMARY KEY CLUSTERED
(
[ClientId] ASC,
[BeaconId] ASC
)
)
Run Code Online (Sandbox Code Playgroud)
我试图运行的脚本如下所示:
CREATE SCHEMA History;
GO
ALTER TABLE dbo.ClientBeacon
ADD
SysStartTime datetime2(0) GENERATED ALWAYS AS ROW START HIDDEN CONSTRAINT DF_ClientBeacon_SysStartTime DEFAULT SYSUTCDATETIME(),
SysEndTime datetime2(0) GENERATED ALWAYS AS ROW END HIDDEN CONSTRAINT DF_ClientBeacon_SysEndTime DEFAULT CONVERT(datetime2 (0), '9999-12-31 23:59:59'),
PERIOD FOR SYSTEM_TIME (SysStartTime, SysEndTime);
GO
ALTER TABLE dbo.ClientBeacon SET (SYSTEM_VERSIONING = ON (HISTORY_TABLE = History.ClientBeacon));
GO
Run Code Online (Sandbox Code Playgroud)
运行脚本的结果是如下错误:
Msg 13542, Level 16, State 0, Line 4
ADD PERIOD FOR SYSTEM_TIME on table 'test.dbo.ClientBeacon' failed because there are open records with start of period set to a value in the future.
Msg 13510, Level 16, State 1, Line 11
Cannot set SYSTEM_VERSIONING to ON when SYSTEM_TIME period is not defined.
Run Code Online (Sandbox Code Playgroud)
关于此错误,我找不到太多信息。在这篇文章的评论中有一个建议,如果 UTC 早于服务器时间,则在默认情况下使用 UTC 可能是一个问题,但我在英国夏令时,比 UTC 早一个小时。我试过使用GETDATE
以防万一,但发生了同样的错误。
我有类似的问题,将 alter table 分成两个单独的语句解决了它。尝试
ALTER TABLE dbo.ClientBeacon ADD
datetime2(0) GENERATED ALWAYS AS ROW START HIDDEN CONSTRAINT F_ClientBeacon_SysStartTime DEFAULT SYSUTCDATETIME(),
SysEndTime datetime2(0) GENERATED ALWAYS AS ROW END HIDDEN CONSTRAINT DF_ClientBeacon_SysEndTime DEFAULT CONVERT(datetime2 (0), '9999-12-31 23:59:59');
GO
ALTER TABLE dbo.ClientBeacon ADD
PERIOD FOR SYSTEM_TIME (SysStartTime, SysEndTime);
GO
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5466 次 |
最近记录: |