Estou usando a replicação de mesclagem no SQL 2012.
Quando insiro linhas em massa em uma tabela e executo este procedimento armazenado para adicionar referências à tabela de rastreamento de mesclagem,
sp_addtabletocontents
Isso está perdendo a pré-computação das partições usando as otimizações de partição pré-computadas?
Pergunta intrigante ... contanto que você tenha um cenário real para aplicá-lo, não seria muito difícil de descobrir. Execute seu processo BCP, execute
sp_addtabletocontents
e, antes da sincronização do assinante, verifique a existência dos registros nas tabelas MSmerge_current_partition_mappings e MSmerge_past_partition_mappings.De acordo com este artigo da technet, é onde os dados de particionamento para cada linha que foi alterada são armazenados após a alteração/pré-sincronização. Consulte o artigo para obter informações mais detalhadas e a maneira como as estruturas da tabela são organizadas dentro do processo. O link fornecido é para o SQL 2008, mas se a estrutura da tabela for a mesma, é seguro apostar que a lógica de pré-computação está próxima o suficiente para responder à sua pergunta.
Não sou especialista em partições pré-computadas, mas parece-me que teria que aproveitar o processo de pré-computação (se ativado), caso contrário, não sincronizaria esses registros.
Obrigado RThomas parece tudo bem.
Encontrei uma tabela que tinha registros adicionados anteriormente usando o BCP. Depois que o BCP foi executado, o procedimento armazenado 'sp_addtabletocontents' foi usado.
Juntei essa tabela à tabela MSmerge_current_partition_mappings e descobri que alguns itens em minha tabela não tinham um registro MSmerge_current_partition_mappings correspondente.
Parecia suspeito, mas o motivo era muito simples. Os registros na tabela correspondiam a uma partição que não existia mais. Adicionei a partição de volta e o fechamento da caixa de diálogo de propriedades de publicações demorou um pouco (teria adicionado os novos registros MSmerge_current_partition_mappings).
Depois disso, pude ver que todos os registros em minha tabela tinham um registro MSmerge_current_partition_mappings correspondente. Tudo confere.