Uso di 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 diIstanza gestita di SQL di Azure
Questo argomento 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
L'uso di tabelle temporali con ottimizzazione per la memoria è applicabile solo a SQL Server e non a SQL Database.
Individuazione dei metadati
Per trovare i metadati relativi a una tabella temporale ottimizzata per la memoria con controllo delle versioni di sistema, è necessario combinare informazioni provenienti da sys.tables (Transact-SQL) e sys.internal_tables (Transact-SQL). 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
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
Modifica dei dati
È possibile modificare le tabelle temporali ottimizzate per la memoria attraverso le stored procedure compilate in modo 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 modo 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 ;
Vedi anche
- Tabelle temporali con controllo delle versioni di sistema con tabelle con ottimizzazione per la memoria
- Creazione di una tabella temporale con controllo delle versioni di sistema e ottimizzazione per la memoria
- Monitoraggio di una tabella temporale con controllo delle versioni di sistema e ottimizzazione per la memoria
- Considerazioni sulle prestazioni con le tabelle temporali con controllo delle versioni di sistema e ottimizzazione per la memoria
- Tabelle temporali
- Verifiche di coerenza del sistema della tabella temporale
- Gestire la conservazione dei dati cronologici nelle tabelle temporali con controllo delle versioni di sistema
- Funzioni e viste per i metadati delle tabelle temporali
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per