Creare una tabella temporale versionata di sistema ottimizzata per la memoria

Si applica a: SQL Server 2016 (13.x) e versioni successive di Istanza gestita di SQL di Azure

Come per la creazione di una tabella di cronologia basata su disco, è possibile creare una tabella temporale ottimizzata per la memoria in diversi modi.

Per creare tabelle ottimizzate per la memoria, è necessario innanzitutto creare il filegroup ottimizzato per la memoria.

Note

Le tabelle temporali ottimizzate per la memoria sono disponibili solo in SQL Server e in Istanza gestita di SQL di Azure. Le tabelle ottimizzate per la memoria e le tabelle temporali sono disponibili in modo indipendente nel database SQL di Azure.

Creare una tabella temporale ottimizzata per la memoria con una tabella di cronologia predefinita

Creare una tabella temporale con una tabella della cronologia predefinita è un'opzione comoda quando si vuole controllare la denominazione e comunque affidarsi al sistema per creare la tabella della cronologia con una configurazione predefinita. Nel seguente esempio, una nuova tabella temporale ottimizzata per la memoria versione di sistema è collegata a una nuova tabella di cronologia basata su disco.

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

Creare una tabella temporale ottimizzata per la memoria con una tabella di cronologia esistente

Puoi creare una tabella temporale collegata a una tabella della storia esistente quando vuoi aggiungere versioning di sistema usando una tabella esistente. Questo scenario è utile quando si vuole eseguire la migrazione di una soluzione temporale personalizzata al supporto predefinito. Nel seguente esempio viene creata una nuova tabella temporale collegata a una tabella di cronologia esistente.

Per prima cosa, crea la tabella storica esistente:

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

Poi, converti una tabella temporale che si collega alla tabella storica.

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