[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