Создание системно-версионной темпоральной таблицы, оптимизированной для памяти

Применимо к: SQL Server 2016 (13.x) и более поздним версиям Управляемый экземпляр SQL Azure

Аналогично созданию таблицы журнала на основе дисков, можно создать оптимизированную для памяти темпоральную таблицу несколькими способами.

Чтобы создать оптимизированные для памяти таблицы, необходимо сначала создать оптимизированную для памяти файловую группу.

Note

Оптимизированные для памяти временные таблицы доступны только в SQL Server и Управляемом экземпляре SQL Azure. Оптимизированные для памяти таблицы и темпоральные таблицы доступны независимо в Базе данных SQL Azure.

Создание оптимизированной для памяти темпоральной таблицы с таблицей журнала по умолчанию

Создание временной таблицы с таблицей истории по умолчанию — удобный вариант, когда вы хотите управлять именованием и при этом полагаться на систему для создания таблицы истории по умолчанию. В следующем примере новая системная временная таблица, оптимизированная для памяти, связана с новой таблицей истории на диске.

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
);