Skapa en minnesoptimerad systemversionsbaserad temporal tabell

Gäller för: SQL Server 2016 (13.x) och senare versioner Azure SQL Managed Instance

På samma sätt som du skapar en diskbaserad historiktabell kan du skapa en minnesoptimerad tidstabell på flera sätt.

Om du vill skapa minnesoptimerade tabeller måste du först skapa den minnesoptimerade filgruppen.

Note

Minnesoptimerade temporala tabeller är endast tillgängliga i SQL Server och Azure SQL Managed Instance. Minnesoptimerade tabeller och temporala tabeller är oberoende tillgängliga i Azure SQL Database.

Skapa en minnesoptimerad tidstabell med standardhistoriktabell

Att skapa en temporär tabell med en standardhistoriktabell är ett smidigt alternativ när du vill kontrollera namngivningen och ändå lita på att systemet skapar historiktabellen med standardkonfiguration. I följande exempel länkas en ny systemversionerad minnesoptimerad tidstabell till en ny diskbaserad historiktabell.

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

Skapa en minnesoptimerad tidstabell med en befintlig historiktabell

Du kan skapa en temporär tabell kopplad till en befintlig historiktabell när du vill lägga till systemversionering med en befintlig tabell. Det här scenariot är användbart när du vill migrera en anpassad temporal lösning till inbyggt stöd. I följande exempel skapas en ny temporal tabell som är länkad till en befintlig historiktabell.

Först, skapa den befintliga historiktabellen:

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

Konvertera sedan en tidstabell som länkar till historiktabellen.

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