server2016新功能 代码出错

wwfxgm 2016-10-14 04:46:57
来自网上,具体地址:
http://www.alexvolok.com/2015/06/sql-2016-temporal-tables-introduction/


-- step 1: Create database, tables and seed dummy data
CREATE DATABASE SQL2016Demo;
GO

USE SQL2016Demo;
CREATE TABLE dbo.Product
(
ProductID INT IDENTITY PRIMARY KEY,
ProductName VARCHAR(100) NOT NULL
)

CREATE TABLE dbo.Project
(
ProjectID INT IDENTITY PRIMARY KEY,
ProjectName VARCHAR(100) NOT NULL,
ProductID INT FOREIGN KEY REFERENCES dbo.Product(ProductID)
)
GO

INSERT INTO dbo.Product (ProductName) VALUES ('Product A');
INSERT INTO dbo.Project (ProjectName, ProductID)
VALUES ('Project A'
, ( SELECT ProductID FROM Product WHERE ProductName = 'Product A' )
);

SELECT * FROM dbo.Product;
SELECT * FROM dbo.Project;

GO

-- step 2: Enable system versionning
BEGIN TRAN

-- Product
ALTER TABLE dbo.Product
ADD PERIOD FOR SYSTEM_TIME (Valid_From, Valid_Till),
Valid_From datetime2 GENERATED ALWAYS AS ROW START NOT NULL DEFAULT GETUTCDATE(),
Valid_Till datetime2 GENERATED ALWAYS AS ROW END NOT NULL DEFAULT CONVERT(DATETIME2, '9999.12.31');

ALTER TABLE dbo.Product
SET (SYSTEM_VERSIONING = ON (HISTORY_TABLE = dbo.Product_History, DATA_CONSISTENCY_CHECK = ON))

-- Project
ALTER TABLE dbo.Project
ADD PERIOD FOR SYSTEM_TIME (Valid_From, Valid_Till),
Valid_From datetime2 GENERATED ALWAYS AS ROW START NOT NULL DEFAULT GETUTCDATE(),
Valid_Till datetime2 GENERATED ALWAYS AS ROW END NOT NULL DEFAULT CONVERT(DATETIME2, '9999.12.31');

ALTER TABLE dbo.Project
SET (SYSTEM_VERSIONING = ON (HISTORY_TABLE = dbo.Project_History, DATA_CONSISTENCY_CHECK = ON))

COMMIT TRAN

GO
-- check table content again:
SELECT * FROM dbo.Product;
SELECT * FROM dbo.Project;


执行的时候,报错。具体报错内容是:
-- step 2: Enable system versionning
BEGIN TRAN

-- Product
ALTER TABLE dbo.Product
ADD PERIOD FOR SYSTEM_TIME (Valid_From, Valid_Till),
Valid_From datetime2 GENERATED ALWAYS AS ROW START NOT NULL DEFAULT GETUTCDATE(),
Valid_Till datetime2 GENERATED ALWAYS AS ROW END NOT NULL DEFAULT CONVERT(DATETIME2, '9999.12.31')
[Err] 42000 - [SQL Server]ADD PERIOD FOR SYSTEM_TIME 失败,因为表“SQL2016Demo.dbo.Product”包含期间结束时间不等于 MAX 日期时间的记录。

虽然看得懂文字,但是不知道如何解决啊!
...全文
582 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

6,129

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 新技术前沿
社区管理员
  • 新技术前沿社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧