Arbeta med minnesoptimerade systemversionsbaserade temporala tabeller
gäller för: SQL Server 2016 (13.x) och senare
Azure SQL Managed Instance
I den här artikeln beskrivs hur arbetet med en minnesoptimerad systemversionstabell skiljer sig från att arbeta med en diskbaserad systemversionsbaserad temporal tabell.
Obs
Minnesoptimerade temporala tabeller är endast tillgängliga i SQL Server och Azure SQL Managed Instance. Minnesoptimerade tabeller och temporala tabeller är oberoende tillgängliga i Azure SQL Database.
Upptäck metadata
Om du vill upptäcka metadata om en minnesoptimerad systemversionerad temporala tabell måste du kombinera information från sys.tables och sys.internal_tables. En systemversionerad temporal tabell visas som huvudobjekt-ID av den interna minneshistoriktabellen
Det här exemplet visar hur du frågar efter och ansluter till dessa tabeller.
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
INNER JOIN sys.tables T1
ON IT.parent_object_id = T1.object_id
INNER JOIN sys.tables T2
ON T1.history_table_id = T2.object_id
WHERE T1.is_memory_optimized = 1
AND T1.temporal_type = 2;
Ändra data
Minnesoptimerade tidstabeller kan ändras genom inbyggda kompilerade lagrade procedurer, vilket gör att du kan konvertera icke-temporala minnesoptimerade tabeller och behålla befintliga inbyggda lagrade procedurer.
I det här exemplet kan du ändra tabellen som skapades tidigare i den inbyggda kompilerade modulen.
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;
Relaterat innehåll
- systemversionsbaserade tidstabeller med minnesoptimerade tabeller
- Skapa en minnesoptimerad systemversionsbaserad tidstabell
- Övervaka minnesoptimerade systemversionsbaserade tidstabeller
- Minnesoptimerad prestanda för systemversionsbaserade tidsangivna tabeller
- temporala tabeller
- Systemkonsekvenskontroller för tidstabeller
- Hantera kvarhållning av historiska data i systemversionsbaserade tidstabeller
- vyer och funktioner för temporala tabellmetadata