Een door het geheugen geoptimaliseerde tijdelijke tabel met systeemversies maken

Van toepassing op: SQL Server 2016 (13.x) en latere versies van 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.

Note

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 temporele tabel met een standaard geschiedenistabel is een handige optie als je de naamgeving wilt beheren en toch op het systeem vertrouwt om de geschiedenistabel met een standaardconfiguratie te maken. In het volgende voorbeeld wordt een nieuwe systeemversiebeheerde, geheugengeoptimaliseerde temporele tabel gekoppeld aan een nieuwe schijfgebaseerde historietabel.

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

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

Je kunt een temporele tabel maken die gekoppeld is aan een bestaande geschiedenistabel wanneer je systeemversiebeheer wilt toevoegen met 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.

Maak eerst de bestaande geschiedenistabel:

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

Converteer vervolgens een temporele tabel die linkt naar de geschiedenistabel.

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