none
garantir commit em 2 bancos RRS feed

  • Pergunta

  •   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

    segunda-feira, 27 de agosto de 2018 17:36

Respostas

Todas as Respostas

  • Deleted
    segunda-feira, 27 de agosto de 2018 22:36
  • Wilton,

    Além disso, analisar o Isolation Level também é algo que deve ser levado em consideração, justamente para tentar estabelecer o melhor controle transacional de forma implícita.


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    sexta-feira, 31 de agosto de 2018 12:25