[firebase-br] Log em uma tabela diferente

Firebase firebase em dominioinf.com.br
Qua Dez 14 14:03:47 -03 2016


Bom dia Marcos,
Segui a extrutura do seu codigo, e deu certo!

Porém estou com uma duvida, para passar o caminho do banco de dados é que 
esta me complicando.

Pelo seu exemplo ele conecta sempre na maquina local, porem vai ter clientes 
que vão estar na rede,
então para cada cliente seria uma conexão diferente.

Exemplo: Em um cliente poderá ser 192.168.1.10:c:\sistema\Log.fdb
                em outro cliente poderia estar 
192.168.0.50:c:\sistema\Log.fdb

Tentei passar por parametro, mas dai eu teria que gerar cliente a cliente o 
que daria muito trabalho.

Você conhece alguma forma de recuperar atraves de um select a conexao do 
banco de dados primario para
passar como parametro para o banco de dados de log?

Grato

-----Mensagem Original----- 
From: Marcos Weimer
Sent: Wednesday, December 14, 2016 1:31 PM
To: FireBase
Subject: Re: [firebase-br] Log em uma tabela diferente

Veja como é feito aqui (estou passando a DDL completa da procedure, assim
fica mais facil de entender os parametros de entrada)

SET TERM ^ ;

create or alter procedure LOG_GRAVAR_COLUNA (
    OPERACAO_ID integer,
    NOME_COLUNA varchar(31),
    OLD_VALUE varchar(5000),
    NEW_VALUE varchar(5000))
as
begin
      execute statement (
      'INSERT INTO log_campos (ID, OPERACAO_ID, COLUNA, VALOR_ANTERIOR,
VALOR_NOVO)
      VALUES (GEN_ID(GEN_LOG_CAMPOS, 1), ?, ?, ?, ?);')
      (:OPERACAO_ID, :NOME_COLUNA, :OLD_VALUE, :NEW_VALUE)
   WITH AUTONOMOUS TRANSACTION
   AS USER 'SYSDBA'
   PASSWORD 'masterkey'
   ROLE 3
  on external '127.0.0.1:c:\caminho\banco_log.fdb'; --configurar aqui o
caminho do banco
end^

SET TERM ; ^



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


Em 14 de dezembro de 2016 11:57, Firebase <firebase em dominioinf.com.br>
escreveu:

> Bom dia Marcos, Obrigado pela resposta.
>
> Tentei fazer dessa forma:
>
> CREATE OR ALTER PROCEDURE P_INSERTINTOIBLM$COLUMNLOGTESTE (
>  OPERATIONLOG_ID NUMERIC(18, 0),
>  COLUMN_NAME VARCHAR(31),
>  OLD_VALUE VARCHAR(255),
>  NEW_VALUE VARCHAR(255),
>  OLD_VALUE_BLOB BLOB SUB_TYPE 0 SEGMENT SIZE 80,
>  NEW_VALUE_BLOB BLOB SUB_TYPE 0 SEGMENT SIZE 80
> )
> AS
> BEGIN
>   EXECUTE STATEMENT
>   'INSERT INTO IBLM$COLUMNLOG (ID, OPERATIONLOG_ID, COLUMN_NAME,
> OLD_VALUE, NEW_VALUE, OLD_VALUE_BLOB, NEW_VALUE_BLOB)
>    VALUES (GEN_ID(GEN_IBLM$COLUMNLOG_ID, 1), :OPERATIONLOG_ID,
> :COLUMN_NAME, :OLD_VALUE, :NEW_VALUE, :OLD_VALUE_BLOB, :NEW_VALUE_BLOB)'
>    ON EXTERNAL 'C:\SISTEMAS\Log.fdb'
>   AS USER 'SYSDBA'
>   PASSWORD 'masterkey'
>   INTO :OPERATIONLOG_ID, :COLUMN_NAME, :OLD_VALUE,
> :NEW_VALUE,:OLD_VALUE_BLOB,:NEW_VALUE_BLOB;
> END
> ;
>
> Porem gera o erro:
> Firebird error.unknown ISC error 335544926.
> At procedure 'P_INSERTINTOIBLM$COLUMNLOGTESTE' line: 11, col: 4.
>
> O que posso estar fazendo de errado?
>
> Grato
>
> -----Mensagem Original----- From: Marcos Weimer
> Sent: Wednesday, December 14, 2016 10:26 AM
> To: FireBase
> Subject: Re: [firebase-br] Log em uma tabela diferente
>
>
> Aqui salvamos em banco separado (acho que foi isso que vc quer dizer).
>
> Veja o execute statement on external
>
> http://firebirdsql.org/refdocs/langrefupd25-psql-execstat.html
>
>
>
> -=Ma®©oS=-
> Marcos R. Weimer
> Delphi / C# / ASP.NET / PHP / WebServices / Firebird
>
>
> Em 14 de dezembro de 2016 10:20, Firebase <firebase em dominioinf.com.br>
> escreveu:
>
> Bom dia a todos,
>>
>> Hoje tenho uma rotina no banco de dados utilizando triggers para fazer
>> auditoria de tudo que é inserido, editado ou excluido nas tabelas
>> no banco de dados.
>>
>> O problema é que o banco de dados está ficando gigante devido ao acumulo
>> desses registros.
>>
>> Gostaria de saber se haveria possibilidade de esses logs serem gravados 
>> em
>> uma tabela separada do banco de dados?
>>
>> Exemplo: o banco de dados principal em C:\Sistema\Dados.fdb
>>                o banco de dados da auditoria em C:\Sistema\Log.fdb
>>
>> Grato
>>
>>
>>
>> ---
>> Este email foi escaneado pelo Avast antivírus.
>> https://www.avast.com/antivirus
>>
>>
>> ______________________________________________
>> 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/pes
>> quisa_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/pes
> quisa_lista.html
>
> ---
> Este email foi escaneado pelo Avast antivírus.
> https://www.avast.com/antivirus
>
>
> ______________________________________________
> 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/pes
> quisa_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 


---
Este email foi escaneado pelo Avast antivírus.
https://www.avast.com/antivirus





Mais detalhes sobre a lista de discussão lista