Werken met systeemversiebeheer en voor geheugen geoptimaliseerde temporele tabellen
van toepassing op: SQL Server 2016 (13.x) en hoger
Azure SQL Managed Instance
In dit artikel wordt beschreven hoe werken met een tijdelijke tabel met een systeemversie die is geoptimaliseerd voor geheugen, verschilt van het werken met een tijdelijke tabel met schijfversies.
Notitie
Tijdelijke tabellen die zijn geoptimaliseerd voor geheugen, zijn alleen beschikbaar in SQL Server en Azure SQL Managed Instance. Tabellen en tijdelijke tabellen die zijn geoptimaliseerd voor geheugen, zijn onafhankelijk beschikbaar in Azure SQL Database.
Metagegevens detecteren
Als u metagegevens wilt detecteren over een tijdelijke tabel met systeemversies die zijn geoptimaliseerd voor geheugen, moet u informatie uit sys.tables en sys.internal_tablescombineren. Een tijdelijke tabel met systeemversies wordt weergegeven als parent_object_id van de interne geschiedenistabel in het geheugen
In dit voorbeeld ziet u hoe u query's kunt uitvoeren op deze tabellen en deze tabellen kunt samenvoegen.
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;
Gegevens wijzigen
Tijdelijke tabellen die zijn geoptimaliseerd voor geheugen kunnen worden gewijzigd via systeemeigen gecompileerde opgeslagen procedures, waarmee u niet-tijdelijke, door geheugen geoptimaliseerde tabellen kunt converteren en bestaande systeemeigen opgeslagen procedures kunt behouden.
Hoe de eerder gemaakte tabel in dit voorbeeld kan worden gewijzigd in een systeemeigen gecompileerde module.
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;
Verwante inhoud
- tijdelijke tabellen met door het systeem geoptimaliseerde tabellen met tabellen die zijn geoptimaliseerd voor geheugen
- Een door het geheugen geoptimaliseerde systeemversiebeheerde temporele tabel maken
- voor geheugen geoptimaliseerde tijdelijke tabellen bewaken
- Geheugen-geoptimaliseerde systeemgegenereerde versie van prestaties van een tijdelijke tabel
- tijdelijke tabellen
- consistentiecontroles van het tijdelijke tabelsysteem
- Het beheer van de retentie van historische gegevens in systeem-geversioneerde tijdtabellen
- weergaven en functies van metagegevens van tijdelijke tabellen