メモリ最適化およびシステム バージョン管理されたテンポラル テーブルの使用
適用対象: SQL Server 2016 (13.x) 以降 Azure SQL DatabaseAzure SQL Managed Instance
このトピックでは、メモリ最適化およびシステム バージョン管理されたテンポラル テーブルと、ディスク ベースのシステム バージョン管理されたテンポラル テーブルの違いについて説明します。
注意
メモリ最適化されたテンポラル テーブルの使用は 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 ;
参照
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示