適用於:SQL Server 2016 (13.x) 和更新版本
Azure SQL 受控執行個體
類似於建立以磁碟為基礎的歷程記錄資料表,您也可以用數種方式建立記憶體最佳化的時態表。
若要建立經記憶體最佳化的資料表,您必須先建立記憶體最佳化檔案群組。
Note
記憶體優化時態表僅適用於 SQL Server 和 Azure SQL 受控實例。 記憶體優化數據表和時態表可在 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
);