Crear una tabla temporal versionada por el sistema optimizada para memoria

Se aplica a: SQL Server 2016 (13.x) y versiones posteriores de Azure SQL Managed Instance

Igual que crea una tabla de historial basada en disco, puede crear una tabla temporal optimizada para memoria de varias maneras.

Para crear tablas optimizadas para memoria, primero debe crear el grupo de archivos optimizados para memoria.

Note

Las tablas temporales optimizadas para memoria solo están disponibles en SQL Server y Azure SQL Managed Instance. Las tablas y tablas temporales optimizadas para memoria están disponibles de forma independiente en Azure SQL Database.

Creación de una tabla temporal optimizada para memoria con una tabla de historial predeterminada

Crear una tabla temporal con una tabla de historial por defecto es una opción conveniente cuando quieres controlar el nombre y seguir confiando en que el sistema cree la tabla de historial con una configuración predeterminada. En el siguiente ejemplo, una nueva tabla temporal optimizada para memoria versión del sistema está vinculada a una nueva tabla de historial basada en 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
);

Creación de una tabla temporal optimizada para memoria con una tabla de historial existente

Puedes crear una tabla temporal vinculada a una tabla de historial existente cuando quieras añadir versionado del sistema usando una tabla existente. Este escenario es útil cuando se quiere migrar una solución temporal personalizada a compatibilidad integrada. En el ejemplo siguiente, se crea una tabla temporal vinculada a una tabla de historial existente.

Primero, crea la tabla de historial existente:

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

Luego, convierte una tabla temporal que enlace a la tabla histórica.

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