Usare una tabella temporale con controllo delle versioni di sistema e ottimizzazione per la memoria
Si applica a: SQL Server 2016 (13.x) e versioni successive Database SQL di Azure Istanza gestita di SQL di Azure
Questo articolo illustra in che modo l'utilizzo di una tabella temporale ottimizzata per la memoria con controllo delle versioni di sistema è diverso dall'utilizzo di una tabella temporale con controllo delle versioni di sistema basata su disco.
Nota
Le tabelle temporali ottimizzate per la memoria sono disponibili solo in SQL Server e non in database SQL di Azure.
Individuare i metadati
Per individuare i metadati relativi a una tabella temporale ottimizzata per la memoria con controllo delle versioni di sistema, è necessario combinare informazioni provenienti da sys.tables e sys.internal_tables. Una tabella temporale con controllo delle versioni di sistema viene presentata come parent_object_id della tabella di cronologia in memoria interna
Questo esempio mostra come eseguire una query e creare un join di tali tabelle.
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;
Modificare i dati
È possibile modificare le tabelle temporali ottimizzate per la memoria attraverso le stored procedure compilate in nativo, che consentono di convertire le tabelle non temporali ottimizzate per la memoria in tabelle con controllo delle versioni e mantenere le stored procedure compilate in nativo.
Questo esempio mostra in che modo è possibile modificare una tabella creata in precedenza in un modulo compilato in modo nativo.
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;
Contenuto correlato
- Tabelle temporali con controllo delle versioni di sistema con tabelle ottimizzate per la memoria
- Creare una tabella temporale ottimizzata con controllo delle versioni di sistema e ottimizzazione per la memoria
- Monitorare una tabella temporale con controllo delle versioni di sistema e ottimizzata per la memoria
- Prestazioni delle tabelle temporali con controllo delle versioni di sistema e ottimizzate per la memoria
- Tabelle temporali
- Verifiche coerenza del sistema della tabella temporale
- Gestire la conservazione dei dati storici nelle tabelle temporali con controllo delle versioni di sistema
- Funzioni e viste per i metadati delle tabelle temporali