Eu tenho um banco de dados front-end do MS Access que acessa um back-end do SQL Server. Isso (até onde sabemos) funciona perfeitamente quando o banco de dados do SQL Server não é replicado. Assim que introduzimos a replicação (do SQL Server Standard em um servidor adequado como editor para o SQL Server Express em um laptop como assinante usando a Replicação de mesclagem), começamos a ter uma corrupção estranha do banco de dados que não consigo explicar.
O que acontece é que temos consultas UPDATE que são executadas em várias tabelas no banco de dados, e também temos o próprio Access fazendo operações CRUD em várias tabelas (essa corrupção não se limita a uma tabela). O resultado que vemos é que aleatoriamente (cerca de 1 em 10 operações) uma linha diferente daquela que queríamos atualizar está sendo atualizada, o que substitui os dados que não queríamos substituir.
A replicação, quando configurada, é executada sob demanda no laptop como um pull merge, e a corrupção ocorre independentemente de a replicação ser executada. Ele só precisa ser habilitado. Nenhuma corrupção parece ocorrer quando a replicação não está habilitada.
Não estou acusando a Microsoft de qualquer falha aqui - é totalmente provável que eu tenha esquecido de marcar alguma caixa para evitar isso. Só não tenho certeza do que preciso procurar.
Edit: O que quero dizer com corrupção é o seguinte: Digamos que eu tenha linhas:
ID | FirstName | LastName
--------------------------
1 | John | Smith
2 | Emma | Citizen
3 | Bob | May
Eu então corro algo ao longo das linhas de:
UPDATE Table SET FirstName = "Test" WHERE ID = 1
E depois que isso acontece eu acabo com isso:
ID | FirstName | LastName
--------------------------
1 | Test | Smith
2 | Test | Citizen
3 | Bob | May
Não há mensagens de erro em nenhuma das tabelas do sistema que lidam com a replicação. A única alteração no esquema é que, quando a replicação é habilitada, ela cria a coluna rowguid.