[firebase-br] Como manter bases de cliente sincronizadas (estrutura do banco)

Marcos Weimer marcosweimer em gmail.com
Sex Set 18 10:05:46 -03 2015


Outro detalhe importante é não executar se houver mais de uma conexão com o
banco, assim não ocorre erro de não conseguir atualizar por alguma
procedure ou algo do genero estar em uso.


-=Ma®©oS=-
Marcos R. Weimer
Delphi / C# / ASP.NET / PHP / WebServices / Firebird


Em 18 de setembro de 2015 09:57, Alexandre <camilo em apollosistemas.com.br>
escreveu:

> Bom dia Rodrigo
>     Aqui na empresa utilizamos o Delphi, e fazemos todo o trabalho por ele.
>     1)No bd, tenho uma tabela de controle, onde quando termino de
> atualizar eu guardo a versão do software que executou a atualizacao.
>     2) Para cada versão que que sai, se for alterar estrutura do banco a
> gente cria uma função (Function atu_20015...), quando inicio o sistema,
> verifico se a versão do executável for maior que a versão que esta gravada
> no banco, executo todas as funcoes posteriores a que estava gravada no
> banco.
> Ex.:
>     1) estou na versão 1.0.0.0, no controle esta gravado esta versão.
>     2) liberei varias versão mas o cliente não atualizou;
>     3) Liberei a verão 1.0.0.50, ao entrar no sistema comparo as versões e
> executo as funcoes de atu_1001 até atu_10050;
>     4) Claro que nas funcoes faço verificação para não criar um campo que
> já existe, chaves, indices....
>
> tem funcionado blz, sem problemas.
>
>
>
> Alexandre Camilo
>
>
>
> Em 18/09/2015 09:24, Rodrigo escreveu:
>
>> Bom dia, gostaria de contar com a ajuda e experiência dos companheiros da
>> lista. Hoje estou tento vários problemas para manter a estrutura do banco
>> de dados dos meus clientes atualizada. Além de ser um processo trabalhoso
>> está sujeito a muitos erros. Como funciona:
>>
>> 1-tenho um bd na internet que guarda os scripts
>> 2-comparo a última versão do meu banco com a nova, gero um script e salvo
>> neste banco com um nr de versão
>> 3-ao entrar no sistema o mesmo checa esse numero de versão e se for
>> diferente baixa o script e roda o mesmo
>> 4-este processo funciona perfeito num mundo perfeito
>>
>> Problemas:
>> 1-se alterei alguma coisa no cliente, para uma correção urgente, já furou
>> o script de atualização
>> 2-se o cliente está várias versões desatualizadas a chançe de não rodar o
>> script é maior
>> 3-qualquer problema que a atualização pare na metade já complica também
>> 4-o cliente fica com o sentimento que cada atualização é uma bomba
>>
>> Nessas situações tenho que pegar o banco do cliente e gerar um script
>> personalizado para atualizar certinho
>>
>> Soluções?
>>
>> 1) a clever components tem uma suíte vcl para automatizar tudo isso,
>> comparando com um banco padrão, o problema é que em meus testes (ano
>> passado) o script de atualização se perdeu várias vezes, coisa que não
>> acontece no ibexpert
>> 2) o ibexpert tem a DLL ibscript, que faria isso também, mas não cheguei
>> a me aprofundar em como usá-la, apenas alguns testes básicos, é um pouco
>> mais complicada para usar
>>
>> Outra questão, comparar o banco do cliente "on the fly", com um banco
>> padrão atualizado, creio que teria que ser com o script do banco padrão e
>> estar criptografado, por questões de segurança
>>
>>
>> Desculpe o texto longo mas creio que essa questão é sempre uma grande
>> dúvida e obrigado a quem puder ajudar.
>>
>> ______________________________________________
>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>> http://www.firebase.com.br/fb/artigo.php?id=1107
>> Para consultar mensagens antigas:
>> http://www.firebase.com.br/pesquisa_lista.html
>>
>>
> --
>
> Alexandre Camilo
> +55 27 3233-4143
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas:
> http://www.firebase.com.br/pesquisa_lista.html
>



Mais detalhes sobre a lista de discussão lista