適用対象:AZURE SQL
Managed Instance SQL Server 2016 (13.x) 以降のバージョン
ディスク ベースの履歴テーブルの作成と同様、メモリ最適化されたテンポラル テーブルはいくつかの方法で作成できます。
メモリ最適化テーブルを作成するには、まずメモリ最適化ファイルグループを作成する必要があります。
Note
メモリ最適化テンポラル テーブルは、SQL Server と Azure SQL Managed Instance でのみ使用できます。 メモリ最適化テーブルとテンポラル テーブルは、Azure SQL Database で個別に使用できます。
既定の履歴テーブルを使用してメモリ最適化テンポラル テーブルを作成する
デフォルト履歴テーブルで時間テーブルを作成するのは、名前をコントロールしつつ、システムにデフォルト設定で履歴テーブルを作成してもらいたい場合に便利な選択肢です。 以下の例では、新しいシステムバージョン対応メモリ最適化された時間テーブルが、新しいディスクベースの履歴テーブルにリンクされています。
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
);
既存の履歴テーブルを使用してメモリ最適化テンポラル テーブルを作成する
既存の履歴テーブルにリンクした時間テーブルを作成すれば、既存のテーブルを使ってシステムのバージョン管理を追加できます。 このシナリオは、カスタムテンポラル ソリューションを組み込みのサポートに移行する場合に便利です。 次の例では、既存の履歴テーブルにリンクした新しいテンポラル テーブルを作成します。
まず、既存の履歴テーブルを作成します:
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
);
次に、ヒストリーテーブルにリンクする時間テーブルを変換します。
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
);