Trabalho com tabelas temporais com controle da versão do sistema com otimização de memória
Aplica-se a: SQL Server 2016 (13.x) e versões posteriores
Banco de Dados SQL do Azure
Instância Gerenciada de SQL do Azure
Este tópico discute como o trabalho com uma tabela temporal com controle da versão do sistema com otimização de memória é diferente do trabalho com uma tabela temporal com versão do sistema baseada em disco.
Observação
O uso de tabelas temporais com otimização de memória só se aplica ao SQL Server, não ao Banco de Dados SQL.
Descoberta de Metadados
Para descobrir os metadados referentes a uma tabela temporal com controle de versão do sistema e otimização de memória, você precisa combinar as informações de sys.tables (Transact-SQL) e sys.internal_tables (Transact-SQL). Uma tabela temporal com controle da versão do sistema é apresentada como parent_object_id da tabela de histórico na memória interna
Este exemplo mostra como consultar e unir essas tabelas.
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
Modificando dados
As tabelas temporais com controle da versão do sistema com otimização de memória podem ser modificadas por meio de procedimentos armazenados compilados nativamente que permitem converter tabelas não temporais com otimização de memória para versão do sistema e manter procedimentos existentes armazenados nativamente.
Este exemplo mostra como uma tabela criada anteriormente pode ser modificada no módulo compilado nativamente.
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 ;
Consulte Também
- Tabelas temporais com controle da versão do sistema com tabelas com otimização de memória
- Criação de uma tabela temporal com controle da versão do sistema com otimização de memória
- Monitorando tabelas temporais com controle da versão do sistema com otimização de memória
- Considerações sobre desempenho com tabelas temporais com versão do sistema e otimização de memória
- Tabelas temporais
- Verificações de consistência do sistema de tabela temporal
- Gerenciar a retenção de dados históricos em tabelas temporais com controle de versão do sistema
- Funções e exibições de metadados de tabela temporal