Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: SQL Server 2016 (13.x) e versões
posteriores Instância Gerenciada SQL do Azure
Este artigo descreve como trabalhar com uma tabela temporal com versão do sistema otimizada para memória é diferente de trabalhar com uma tabela temporal com versão do sistema baseada em disco.
Observação
As tabelas temporais com otimização de memória só estão disponíveis no SQL Server e na Instância Gerenciada SQL do Azure. Tabelas com otimização de memória e tabelas temporais estão disponíveis independentemente no Banco de Dados SQL do Azure.
Descobrir metadados
Para descobrir metadados sobre uma tabela temporal com versão do sistema otimizada para memória, é necessário combinar informações de sys.tables e sys.internal_tables. Uma tabela temporal com versionamento pelo sistema é apresentada como parent_object_id da tabela histórica interna em memória.
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
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;
Modificar dados
As tabelas temporais com otimização de memória podem ser modificadas por meio de procedimentos armazenados compilados nativamente, que permitem converter tabelas com otimização de memória não temporal e manter os procedimentos armazenados nativamente existentes.
Este exemplo de como a 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;
Conteúdo relacionado
- Tabelas temporais versionadas pelo sistema com tabelas otimizadas para memória
- Crie uma tabela temporal com versão do sistema otimizada para memória
- Monitorizar tabelas temporais com versão do sistema otimizadas para memória
- Desempenho de tabela temporal com versão de sistema otimizada para memória
- Tabelas temporais
- Verificações de consistência do sistema de tabela temporal
- Gerencie a retenção de dados históricos em tabelas temporais versionadas pelo sistema
- Exibições e funções de metadados de tabela temporal