Validar Informação de Partição para um Assinante de Fusão

Aplica-se a: SQL Server

Quando defines um filtro de linhas parametrizado para uma publicação de fusão, utilizas uma função que faz referência à informação do assinante, como o nome de login do assinante. Por defeito, a replicação valida a informação do Assinante com base nessa função antes de cada sincronização e sempre que um snapshot é aplicado ao Assinante. O processo de validação assegura que os dados são particionados corretamente para cada Assinante. O comportamento de validação é controlado pela propriedade validate_subscriber_info publicação, que pode ser alterada usando sp_changemergepublication (Transact-SQL) ou na página de Opções de Subscrição da caixa de diálogo Propriedades de Publicação . Para mais informações sobre a alteração das propriedades de publicação, consulte Visualizar e Modificar Propriedades de Publicação.

Como Funciona a Validação de Partições

Quando uma publicação é filtrada, por exemplo, usando a função SUSER_SNAME(), o Merge Agent aplica o snapshot inicial a cada Subscritor com base em dados válidos para a expressão SUSER_SNAME().

Se a validação estiver ativada, quando o Assinante se reconectar ao Publisher para a próxima sincronização, o Merge Agent valida a informação no Assinante e garante que a partição de cada Assinante é igual à recebida no instantâneo inicial. Para cada fusão ou aplicação de snapshot subsequente, o Merge Agent valida a partição de cada Assinante.

Se o Merge Agent detetar que a função utilizada na expressão de filtragem devolve um valor diferente do que devolveu no snapshot inicial, a aplicação do merge ou do snapshot falha, e a subscrição desse Assinante poderá necessitar de reinicialização. A reinicialização pode ser necessária para evitar problemas que podem surgir se as definições de fusão de um Assinante forem alteradas, mas pode ser suficiente alterar a informação do Assinante, como o nome de login, para o valor usado no momento do snapshot original.

Quando o Merge Agent valida uma partição, além de validar a partição contra os valores devolvidos por quaisquer funções usadas na filtragem de expressões, o agente também verifica se o snapshot foi gerado antes de alterações que o invalidam, como operações de limpeza de metadados ou alterações de esquema. Se um snapshot particionado for demasiado antigo, o Merge Agent devolverá um erro e terá de regenerar um snapshot particionado para esse Subscriber com base num snapshot regular atual.