tenho um banco local sql server, e um remoto tambem sql
tenho uma rotina de sincronizacao que pega os dados locais e envia para o remoto.
inicio a transacao no banco local e no remoto
database1.begintran
database2.begintran
busco dados locais
insere no remoto
gravo alguns flags locais
database1.commit
database2.commit
se der erro
se database1 esta com transacao aberta
database1.roolback
se database2 esta com transacao aberta
database2.roolback
problema - aqui pode ocorrer o commit no banco1
e nao ocorre o commit no banco2, teria uma inconsistencia
pois o sistema pode ter gravado os flags locais indicando que o dado
foi para o servidor, mas deu erro no commit do servidor.
se fizer o contratio, posso comitar no servidor, e dar erro no commit local
vou ter os dados registrados no servidor, mas os registros locais vai constar que nao foram
enviados.
como faço para garantir a consistencia nesse ambiente.
em milhares de pedidos sincronizados, de vez em quando aparece esses casos.
wilton