[firebase-br] Replicar BD

Gustavo Luis Hinterholz gustavoluishinterholz em gmail.com
Qua Abr 2 14:26:55 -03 2014


Isso ai tá com kra de LOG dai ... não replicação ...

Att
Gustavo Luis Hinterholz
9381-8192
*http://gustavohinterholz.blogspot.com.br/
<http://gustavohinterholz.blogspot.com.br/>* <http://www.gustavo/>


Em 2 de abril de 2014 14:23, Toy Ghilardi <toyhardcore em gmail.com> escreveu:

> Ola Wesley,
>
> O recurso que citaram de "replicação" que o firebird tem é o shadows que
> não tem nada a ver com o que você quer.
>
> Uma vez li um artigo que coloquei em prática que é o seguinte.
>
> Criar uma tabela onde você vai gravar todas alterações ocorridas no banco
> de dados nas tabelas que tenha interesse.
>
> CREATE GENERATOR NEW_CHANGE_ID;
>
> CREATE TABLE CHANGES (
>     CHANGE_ID           INTEGER NOT NULL,
>     CHANGE_TYPE         CHAR(1) NOT NULL,
>     SOURCE_KEY_FIELD    VARCHAR(100) NOT NULL,
>     SOURCE_KEY          VARCHAR(100) NOT NULL,
>     SOURCE_TABLE        VARCHAR(100),
>     SOURCE_KEY_2        VARCHAR(100),
>     SOURCE_KEY_FIELD_2  VARCHAR(100),
>     TIPO                CHAR(1)
> );
> ALTER TABLE CHANGES ADD PRIMARY KEY (CHANGE_ID);
>
>
>
> SET TERM ^ ;
>
> /* Trigger: CHANGES_NEWID */
> CREATE OR ALTER TRIGGER CHANGES_NEWID FOR CHANGES
> ACTIVE BEFORE INSERT POSITION 0
> AS
> BEGIN
>     NEW.CHANGE_ID = GEN_ID(NEW_CHANGE_ID,1);
> END
> ^
> SET TERM ; ^
>
> Depois em cada tabela que tiver interesse em replicar, tu cria uma trigger
> assim:
>
> SET TERM ^ ;
> CREATE OR ALTER TRIGGER CLIENTES_REPL_INSERT FOR CLIENTES
> ACTIVE AFTER INSERT POSITION 0
> AS
> declare variable vUser varchar(15);
> BEGIN
>     INSERT INTO CHANGES
>       (CHANGE_TYPE, SOURCE_KEY_FIELD,
>        SOURCE_KEY, SOURCE_TABLE,USERNAME)
>     VALUES
>       ('I', 'CODIGO_CLIENTE', NEW.CODIGO_CLIENTE, 'CLIENTES');
> END
> ^
> SET TERM ; ^
>
> Bem, agora todos clientes que forem cadastrados o sistema irá registrar na
> tabela changes.
>
> Basta você criar uma aplicação que fique rodando e com base nos dados
> gravados em changes, pegue os valores na tabela clientes e gere um insert
> para rodar no outro banco.
>
> Abraço!
>
>
>
> Em 2 de abril de 2014 09:11, Wesley Oliveira <wesley em rgsystem.com.br
> >escreveu:
>
> > Olá pessoal!
> >
> >
> >
> > Pesquisei um pouco na internet e achei alguns replicadores Firebird que
> não
> > funcionaram como eu queria... Será que vocês têm alguma idéia?
> >
> > É o seguinte:
> >
> >
> >
> > Quero ter duas bases de dados iguais em dois locais separados. Exemplo:
> >
> >
> >
> > Vou disponibilizar o acesso ao sistema na rede interna, mas quero deixar
> o
> > acesso Web num servidor em nuvens... Então teria a base para acesso
> Desktop
> > em um servidor interno e a base para acesso Web no servidor em nuvem. Só
> > que
> > como preciso das informações de ambos acessos EM AMBOS ACESSOS, preciso
> que
> > as bases sejam idênticas o tempo todo. Tem algum componente Delphi ou
> > aplicativo que faz isso?
> >
> >
> >
> > Agradeço a atenção de todos!
> >
> >
> > Att.
> >
> > Wesley Oliveira
> > Programador de Sistemas de Informação
> >
> > RG System Informática
> > Fone:      +55 (27) 3727-1127
> > Celular:    +55 (27) 99606-0038
> >
> >
> >
> >
> >
> > ______________________________________________
> > 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://firebase.com.br/pesquisa
> >
>
>
>
> --
> toyhardcore em gmail.com.br
> ______________________________________________
> 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://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista