使用記憶體最佳化的系統版本設定時態表

適用於:SQL Server 2016 (13.x) 及更新版本 Azure SQL DatabaseAzure SQL 受控執行個體

本主題討論記憶體最佳化之系統版本設定時態表和以磁碟基礎之系統版本設定時態表的使用方式差異。

注意

搭配使用 Temporal 和記憶體最佳化資料表僅適用於 SQL Server,不適用於 SQL Database。

探索中繼資料

若要探索記憶體最佳化之系統版本設定時態表的相關中繼資料,您需要結合來自 sys.tables (Transact-SQL)sys.internal_tables (Transact-SQL) 的資訊。 系統版本設定時態表會呈現為內部記憶體中記錄資料表的 parent_object_id。

以下範例示範如何查詢及聯結這些資料表。

SELECT SCHEMA_NAME (T1.schema_id) as TemporalTableSchema
    , OBJECT_NAME(IT.parent_object_id) as TemporalTableName
    , T1.object_id as TemporalTableObjectId
    , IT.Name as InternalHistoryStagingName
    , SCHEMA_NAME (T2.schema_id) as HistoryTableSchema
    , OBJECT_NAME (T1.history_table_id) as HistoryTableName
FROM sys.internal_tables IT
JOIN sys.tables T1
    ON IT.parent_object_id = T1.object_id
JOIN sys.tables T2
    ON T1.history_table_id = T2.object_id
WHERE T1.is_memory_optimized = 1 AND T1.temporal_type = 2

修改資料

原生編譯的預存程序可讓您將非暫時記憶體最佳化的資料表轉換成系統版本設定,並保留現有的原生預存程序,因此您可以透過這些預存程序來修改系統版本設定的記憶體最佳化時態表。

以下範例展示如何在原生編譯的模組中修改先前建立的資料表。

CREATE PROCEDURE dbo.UpdateFXCurrencyPair
   (
      @ProviderID int
      , @CurrencyID1 int
      , @CurrencyID2 int
      , @BidRate decimal(8,4)
      , @AskRate decimal(8,4)
   )
WITH NATIVE_COMPILATION, SCHEMABINDING
   , EXECUTE AS OWNER
AS
   BEGIN ATOMIC WITH
   (TRANSACTION ISOLATION LEVEL = SNAPSHOT, LANGUAGE = N'English')
      UPDATE dbo.FXCurrencyPairs SET AskRate = @AskRate, BidRate = @BidRate
     WHERE ProviderID = @ProviderID AND CurrencyID1 = @CurrencyID1 AND CurrencyID2 = @CurrencyID2
END
GO ;

另請參閱