Temos um grande banco de dados que está sendo replicado transacionalmente (unidirecional) entre os sites.
A Publicação possui um filtro baseado em data para que não replique dados antigos.
Preciso adicionar uma nova assinatura a esta publicação, mas não tenho capacidade no log de transações no novo servidor de assinatura para obter um instantâneo de todos os dados e vai demorar tanto para copiar o instantâneo completo pela rede que o assinante irá estar milhões de transações atrasadas após a inicialização.
Minha pergunta é: o filtro se aplica ao instantâneo?
Por exemplo, o banco de dados e todos os dados estão no novo servidor de assinatura (via backup/restauração). O filtro na publicação (filtrar linhas) é definido como > 2011 em um campo de data. Se eu definir o snapshot para inicializar a assinatura, ele irá:
- Crie um instantâneo de todos os dados nos artigos de publicação que sejam posteriores a 2011
OU
- Crie um instantâneo de todos os dados na publicação
Além disso, se 1 for verdadeiro, quando aplicar o instantâneo no assinante, removerá todos os dados que já estão na tabela (portanto, os dados adicionados por meio da operação inicial de backup/restauração desaparecerão. Deixando-me APENAS dados > 2011?)
Se você não pode dizer que eu preciso de todos os dados lá do backup (o anterior a 2011), mas preciso que o instantâneo seja pequeno o suficiente para inicializar o sub dentro de um prazo razoável (portanto, espero que apenas os dados> 2011 no instantâneo ).
Obrigado por qualquer ajuda.
Muitos testes depois, eu tenho as respostas.
O filtro se aplica ao instantâneo?
Sim.
Portanto, da minha lista numerada, 1 está correto. A razão pela qual eu realmente não acredito que isso seja verdade é porque, ao testar isso rapidamente, esqueci a opção em Propriedades do artigo que controla como o instantâneo é aplicado. Isso também me fez fazer a pergunta após a lista numerada começando com 'Mais adiante'. A resposta a esse parágrafo é: depende de como é definido nas Propriedades do artigo. Para explicar isso mais detalhadamente:
Clique com o botão direito do mouse em sua publicação em SSMS > Propriedades > clique em Artigos na guia à esquerda > botão Propriedades do artigo (escolha uma das opções relevantes para você). Consulte a seção Objeto de destino > Ação se o nome estiver em uso
Esta opção controla (para este ou TODOS os artigos) o que o Agente faz ao aplicar o Snapshot ao banco de dados de Destino. Como padrão, descarta e recria o objeto (é por isso que parecia estar substituindo todos os dados - essencialmente porque estava descartando o objeto, criando o objeto, BCP'ing os dados em (então qualquer coisa anteriormente na tabela se foi)).
Eu precisava "Excluir dados. Se o artigo tiver um filtro de linha, exclua apenas os dados que correspondam ao filtro", pois isso mantinha os dados já na tabela que não eram > 2011.
Espero que alguém no futuro possa economizar algum tempo testando encontrando esta resposta! Estou um pouco surpreso que a opção padrão seja Soltar e substituir o objeto para ser honesto, mas suponho que isso atenda aos propósitos da maioria das pessoas para Snapshot. Para que alguém possa encontrar esta resposta se estiver pesquisando no google, reproduzirei a pergunta como faria no google:
Ao inicializar a replicação do instantâneo em uma publicação com linhas filtradas, ele aplica o filtro ao instantâneo obtido?