Share via


Creación de una tabla temporal con control de versiones del sistema con optimización para memoria

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

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

Nota

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

Esta opción es práctica en casos en los que quiera controlar la nomenclatura y, aun así, delegar al sistema la generación de la tabla de historial con la configuración predeterminada. En el ejemplo siguiente, una tabla temporal con control de versiones del sistema optimizada para memoria se vincula a una nueva tabla del 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
   (
       MEMORY_OPTIMIZED = ON, DURABILITY = SCHEMA_AND_DATA,
          SYSTEM_VERSIONING = ON ( HISTORY_TABLE = History.DepartmentHistory )
    );

La creación de una tabla temporal vinculada a una tabla de historial existente resulta útil cuando desea control de versiones del sistema mediante una tabla existente, por ejemplo, cuando quiera migrar una solución temporal personalizada como cuando desea migrar una solución temporal personalizada a compatibilidad integrada. En el ejemplo siguiente, se crea una nueva tabla temporal vinculada a una tabla de historial existente.

--Existing table
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
   )
;
--Temporal table
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
   )
;

Vea