创建内存优化的系统版本控制时态表

适用于: SQL Server 2016 (13.x) 及更高版本 Azure SQL 托管实例

与创建基于磁盘的历史记录表类似,可以通过多种方式创建内存优化的时态表。

要创建内存优化表,必须首先创建内存优化的文件组

注释

内存优化临时表仅在 SQL Server 和 Azure SQL 托管实例中可用。 内存优化表和临时表在 Azure SQL 数据库中独立可用。

使用默认历史记录表创建内存优化时态表

创建带有默认历史表的时序表是一个方便的选择,当你想控制命名并依赖系统用默认配置创建历史表时。 在以下示例中,一个新的系统版本化内存优化时序表被链接到一个新的基于磁盘的历史表。

CREATE SCHEMA History;
GO

CREATE TABLE dbo.Department
(
    DepartmentNumber CHAR (10) NOT NULL PRIMARY KEY NONCLUSTERED,
    DepartmentName VARCHAR (50) NOT NULL,
    ManagerID INT NULL,
    ParentDepartmentNumber CHAR (10) NULL,
    ValidFrom DATETIME2 GENERATED ALWAYS AS ROW START HIDDEN NOT NULL,
    ValidTo DATETIME2 GENERATED ALWAYS AS ROW END HIDDEN NOT NULL,
    PERIOD FOR SYSTEM_TIME (ValidFrom, ValidTo)
)
WITH (
    SYSTEM_VERSIONING = ON (
        HISTORY_TABLE = dbo.Department_History
    ),
    MEMORY_OPTIMIZED = ON,
    DURABILITY = SCHEMA_AND_DATA
);

使用现有历史记录表创建内存优化时态表

当你想用现有的历史表添加系统版本管理时,可以创建一个时序表,链接到已有的历史表。 当您想要将自定义时间性解决方案迁移到内置支持时,此方案非常有用。 在以下示例中,创建了链接到现有历史记录表的新时态表。

首先,创建现有的历史表:

CREATE TABLE Department_History
(
    DepartmentNumber CHAR (10) NOT NULL,
    DepartmentName VARCHAR (50) NOT NULL,
    ManagerID INT NULL,
    ParentDepartmentNumber CHAR (10) NULL,
    ValidFrom DATETIME2 NOT NULL,
    ValidTo DATETIME2 NOT NULL
);

然后,转换一个时态表,该表链接到历史表。

CREATE TABLE Department
(
    DepartmentNumber CHAR (10) NOT NULL PRIMARY KEY NONCLUSTERED,
    DepartmentName VARCHAR (50) NOT NULL,
    ManagerID INT NULL,
    ParentDepartmentNumber CHAR (10) NULL,
    ValidFrom DATETIME2 GENERATED ALWAYS AS ROW START HIDDEN NOT NULL,
    ValidTo DATETIME2 GENERATED ALWAYS AS ROW END HIDDEN NOT NULL,
    PERIOD FOR SYSTEM_TIME (ValidFrom, ValidTo)
)
WITH (
    SYSTEM_VERSIONING = ON (
        HISTORY_TABLE = dbo.Department_History,
        DATA_CONSISTENCY_CHECK = ON
    ),
    MEMORY_OPTIMIZED = ON,
    DURABILITY = SCHEMA_AND_DATA
);