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

Marcos Calibrare marcos em calibrare.com.br
Sex Set 18 12:10:14 -03 2015


Bom dia a todos.
Também trabalho como o Zottis.
Verifico a versão do banco do cliente, quando o usuário executa o login no
programa.
Cada versão tem como chave de verificação a existência de um determinado
campo.
Uso uma rotina básica de verificação:
function ExisteCampo_DB(NomeTabela,
  NomeCampo: string): boolean;
  var loQry: TSQLQuery;
begin
   try
      Result := True;
      loQry := TSQLQuery.Create(nil);
      loQry.SQLConnection := dtmMain.SqlTecnico;
      loQry.Close;
      loQry.SQL.Clear;
      loQry.SQL.Add('select RDB$RELATION_NAME, RDB$FIELD_NAME from
RDB$RELATION_FIELDS');
      loQry.SQL.Add('  where');
      loQry.SQL.Add('  (RDB$FIELD_NAME    = '+QuotedStr(NomeCampo) + ') AND
');
      loQry.SQL.Add('  (RDB$RELATION_NAME = '+QuotedStr(NomeTabela) + ')');
      loQry.Open;
      if loQry.IsEmpty then
      begin
         Result := False;
      end
      else begin
         Result := True;
      end;
   finally
     FreeAndNil(loQry);
   end;
end;

Se o campo não existir,  disparo as procedures de criação de campos e
inicialização destes. 

Marcos Caetano

-----Mensagem original-----
De: lista [mailto:lista-bounces em firebase.com.br] Em nome de Zottis
Enviada em: sexta-feira, 18 de setembro de 2015 09:32
Para: FireBase <lista em firebase.com.br>
Assunto: Re: [firebase-br] Como manter bases de cliente sincronizadas
(estrutura do banco)

 

Bom Dia, eu trabalho assim: 

tenho querys de pesquisa de estrutura de banco(verificar se campo tal existe
na tabela tal, procedures, etc). 

se preciso alterar alguma coisa, por exemplo inserir uma coluna em uma
tabela faço assim: 

verifico se o campo existe na tabela através da query de pesquisa, e se não
existir, roda um script que esta no sistema, assim não tenho interferência
de nada externos, tenho feito assim há vários anos sem problemas. 

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 [1]) - Hospedado em 
> www.locador.com.br [2] Para saber como gerenciar/excluir seu cadastro 
> na lista, use: http://www.firebase.com.br/fb/artigo.php?id=1107 [3] 
> Para consultar mensagens antigas: 
> http://www.firebase.com.br/pesquisa_lista.html [4]
 

Links:
------
[1] http://www.firebase.com.br
[2] http://www.locador.com.br
[3] http://www.firebase.com.br/fb/artigo.php?id=1107
[4] http://www.firebase.com.br/pesquisa_lista.html
______________________________________________
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