Bellek için optimize edilmiş sistem sürümlü geçici tablolarla çalışma

Şunlar için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümleri Azure SQL Yönetilen Örnek

Bu makale, bellek optimize edilmiş sistem versiyonlu zamansal tabloyla çalışmanın, disk tabanlı sistem versiyonlu zamansal tabloyla çalışmanın nasıl farklı olduğunu açıklar.

Uyarı

Bellek optimize edilmiş zamansal tablolar yalnızca SQL Server ve Azure SQL Yönetilen Örnek'te kullanılabilir. Bellek için iyileştirilmiş tablolar ve zamana bağlı tablolar Azure SQL Veritabanı'nda bağımsız olarak kullanılabilir.

Meta verileri bulma

Bellek optimize edilmiş sistem versiyonlu zamansal tablo hakkında meta verileri keşfetmek için sys.tables ve sys.internal_tables verilerini birleştirin. Sistem sürümünde bir zamansal tablo, dahili bellek geçmişi tablosunun sütunu olarak görünür parent_object_id .

Bu örnekte bu tabloları sorgulama ve birleştirme adımları gösterilmektedir.

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 AS IT
     INNER JOIN sys.tables AS T1
         ON IT.parent_object_id = T1.object_id
     INNER JOIN sys.tables AS T2
         ON T1.history_table_id = T2.object_id
WHERE T1.is_memory_optimized = 1
      AND T1.temporal_type = 2;

Verileri değiştirme

Bellek optimize edilmiş zaman tablolarını yerel olarak derlenmiş depolanmış prosedürler aracılığıyla değiştirebilirsiniz. Bu prosedürler, zamansal olmayan bellek optimize edilmiş tabloları dönüştürmenizi ve mevcut yerel olarak saklanan prosedürleri korumanızı sağlar.

Bu örnek, yerel derlenmiş bir modülde mevcut bir tablonun nasıl değiştirileceğini gösterir.

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;