Replicação para assinantes de tabela com otimização de memória
Aplica-se a: SQL Server Instância Gerenciada de SQL do Azure
As tabelas que atuam como assinantes de replicação transacional e de instantâneo, com exceção da replicação transacional Ponto a Ponto, podem ser configuradas como tabelas com otimização de memória. Outras configurações de replicação não são compatíveis com tabelas com otimização de memória. Este recurso está disponível a partir do SQL Server 2016 (13.x).
São necessárias duas configurações
Configurar o banco de dados do assinante para oferecer suporte à replicação de tabelas com otimização de memória
Defina a propriedade @memory_optimized para true usando sp_addsubscription (Transact-SQL) ou sp_changesubscription (Transact-SQL).
Configurar o artigo para oferecer suporte à replicação de tabelas com otimização de memória
Defina a opção
@schema_option = 0x40000000000
para o artigo usando sp_addarticle (Transact-SQL) ou sp_changearticle (Transact-SQL).
Para configurar uma tabela com otimização de memória como um assinante
Crie uma publicação transacional. Para obter mais informações, consulte Criar uma assinatura.
Adicione artigos à publicação. Para obter mais informações, consulte Define an Article.
Se a configuração usar Transact-SQL, defina o parâmetro @schema_option do procedimento armazenado sp_addarticle como
0x40000000000.Na janela de propriedades do artigo, defina Habilitar Otimização de memória como true.
Inicie o trabalho do Agente de Instantâneo para gerar o instantâneo inicial para essa publicação. Para obter mais informações, consulte Criar e aplicar o instantâneo inicial.
Agora, crie uma nova assinatura. No Assistente para Nova Assinatura , defina a Assinatura de Otimização de Memória como true.
As tabelas com otimização de memória agora devem começar a receber atualizações do publicador.
Reconfigurar uma replicação de transação existente
Vá para propriedades de assinatura no Management Studio e defina Assinatura com Otimização de Memória como true. As alterações não são aplicadas até a assinatura ser reiniciada.
Se a configuração usar Transact-SQL, defina o novo parâmetro @memory_optimized do procedimento armazenado sp_addsubscription como true.
Vá até as propriedades do artigo para uma publicação no Management Studio e defina a otimização Habilitar memória como true.
Se a configuração usar Transact-SQL, defina o parâmetro @schema_option do procedimento armazenado sp_addarticle como
0x40000000000.Tabelas com otimização de memória não dão suporte a índices clusterizados. Para que a replicação trate disto, convertendo-o para um índice não clusterizado no destino, defina Converter índice clusterizado em não clusterizado para artigo com otimização de memória como true.
Se a configuração usar Transact-SQL, defina o parâmetro @schema_option do procedimento armazenado sp_addarticle como 0x0000080000000000.
Regenere o instantâneo.
Reinicialize a assinatura.
Limitações e restrições
Somente há suporte para a replicação transacional unidirecional. Não há suporte para a replicação transacional ponto a ponto.
Não é possível publicar as tabelas com otimização de memória.
As tabelas de replicação no distribuidor não podem ser configuradas como tabelas com otimização de memória.
A replicação de mesclagem não pode incluir tabelas com otimização de memória.
No assinante, as tabelas envolvidas na replicação transacional podem ser configuradas como tabelas com otimização de memória, mas as tabelas do assinante devem atender aos requisitos de tabelas com otimização de memória. Isso requer as restrições a seguir.
As tabelas replicadas nas tabelas com otimização de memória em um assinante estão limitadas a tipos de dados permitidos em tabelas com otimização de memória. Para obter mais informações, veja Tipos de dados com suporte no OLTP in-memory.
Nem todos os recursos de Transact-SQL têm suporte com tabelas com otimização de memória. Consulte Construtos Transact-SQL sem suporte no OLTP in-memory para ver mais detalhes.
Modificando um arquivo de esquema
Se você estiver usando a opção de tabela com otimização de memória
DURABILITY = SCHEMA_AND_DATA
, a tabela deverá ter um índice de chave primária não clusterizado.ANSI_PADDING deve ser ON.