Delen via


Een door het geheugen geoptimaliseerde tijdelijke tabel met systeemversies maken

van toepassing op: SQL Server 2016 (13.x) en hoger Azure SQL Managed Instance

Net als bij het maken van een geschiedenistabel op basis van een schijf, kunt u op verschillende manieren een tijdelijke tabel maken die is geoptimaliseerd voor geheugen.

Als u tabellen wilt maken die zijn geoptimaliseerd voor geheugen, moet u eerst de voor geheugen geoptimaliseerde bestandsgroep maken.

Notitie

Tijdelijke tabellen die zijn geoptimaliseerd voor geheugen, zijn alleen beschikbaar in SQL Server en Azure SQL Managed Instance. Tabellen en tijdelijke tabellen die zijn geoptimaliseerd voor geheugen, zijn onafhankelijk beschikbaar in Azure SQL Database.

Een tijdelijke tabel maken die is geoptimaliseerd voor geheugen met standaardgeschiedenistabel

Het maken van een tijdelijke tabel met een standaardgeschiedenistabel is een handige optie als u naamgeving wilt beheren en nog steeds afhankelijk wilt zijn van het systeem om geschiedenistabel met standaardconfiguratie te maken. In het volgende voorbeeld is een nieuwe geheugen-geoptimaliseerde systeemversie van een tijdelijke tabel gekoppeld aan een nieuwe op schijf gebaseerde geschiedenistabel.

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

Een tijdelijke tabel maken die is geoptimaliseerd voor geheugen met een bestaande geschiedenistabel

U kunt een tijdelijke tabel maken die is gekoppeld aan een bestaande geschiedenistabel wanneer u systeemversiebeheer wilt toevoegen met behulp van een bestaande tabel. Dit scenario is handig als u een aangepaste tijdelijke oplossing wilt migreren naar ingebouwde ondersteuning. In het volgende voorbeeld wordt een nieuwe tijdelijke tabel gemaakt die is gekoppeld aan een bestaande geschiedenistabel.

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