Replicação entre servidores
Como ajustar divergências de replicação das preferências de usuário?
RTREPLICATOR.FAQ-41320
A partir da versão v15.25 a replicação começou a apresentar registros na fila E (erro) sem tabela ou registro de origem relacionadas a preferências de usuários. Isso foi causado porque as preferências não estavam sendo atualizadas até esta versão.
Uma alternativa para ajustar este problema seria gerar um script com a inclusão de todas as preferências de usuários, deletar todas as preferências (replicando este comando) e depois executar o script replicando para todas as instâncias. Após isso, TODAS as instâncias terão as preferências de usuários sincronizadas.
O problema desta alternativa é que ela assume as preferências do usuário em uma instância específica (que pode não ser a que ele costuma utilizar).
Neste caso, será necessário pegá-las em cada uma das instâncias, concatená-las em um único script, tratar duplicidades de valores e, por fim, aplicar em uma instância replicando para as demais:
- Abrir em um editor de textos e incluir a linha abaixo:
delete from preferencias_usuarios;
- Acessar todas as instâncias e executar:
dml-insert preferencias_usuarios order by usuario_id;
- Copiar os scripts resultantes para dentro do texto que está sendo editado.
- Colar e executar o script copiado COM A OPÇÂO "Replicar" ATIVO:
delete from preferencias_usuarios;
insert into preferencias_usuarios (id, preferencia_id, usuario_id, valor) values (603597, 176237, 597693, 'S');
insert into preferencias_usuarios (id, preferencia_id, usuario_id, valor) values (152283, 118576, 72153, 'N');
insert into preferencias_usuarios (id, preferencia_id, usuario_id, valor) values (169341, 118802, 21864, 'N');
insert into preferencias_usuarios (id, preferencia_id, usuario_id, valor) values (176147, 116878, 21864, 'N');
...
- Nos casos de erros de UK_PRUS_PROPRIEDADE_USUARIO, excluir a linha do valor não desejado e repetir a operação até que não ocorram mais erros (observar que erros causam rollback, ou seja, somente após tudo certo é que a transação será comitada (confirmadas as inclusões dos registros nas tabelas).
Atenção
Esta operação deve ser preferencialmente realizada sem que existam usuários acessando as bases.
O acesso de um usuário à base durante este processo pode criar uma nova preferência de usuário que não será incluída no script acima.
Ver também: