[firebase-br] Log de conexões - funcionando
Tecnobyte Informática
temp2 em tecnobyte.com.br
Sex Out 26 11:04:46 -03 2012
Boa tarde
Em outra mensagem estou tentando resolver problemas com a geração de log de
transações.
Nesta mensagem segue o script SQL que prepara o banco de dados para gerar
log de todas conexões. Está funcionando perfeito no Firebird 2.1.3. Fica aí
como contribuição para quem precisa de algo parecido.
DICA! Para acessar o banco sem rodar os gatilhos de de eventos do banco de
dados, use o isql com parâmetro -nodbtriggers.
Exemplo:
isql.exe -nodbtriggers -user...
---- SQL ---
CREATE TABLE MON_ATTACHMENTS
(
ID INTEGER NOT NULL,
MON_ATTACHMENT_ID INTEGER NOT NULL,
MON_SERVER_PID INTEGER NOT NULL,
MON_STATE SMALLINT NOT NULL,
MON_ATTACHMENT_NAME VARCHAR(255) CHARACTER SET UNICODE_FSS NOT
NULL,
MON_USER VARCHAR(31) CHARACTER SET UNICODE_FSS NOT NULL,
MON_ROLE VARCHAR(31) CHARACTER SET UNICODE_FSS NOT NULL,
MON_REMOTE_PROTOCOL VARCHAR(10) CHARACTER SET ASCII NOT NULL,
MON_REMOTE_ADDRESS VARCHAR(255) CHARACTER SET ASCII NOT NULL,
MON_REMOTE_PID INTEGER,
MON_CHARACTER_SET_ID SMALLINT NOT NULL,
MON_CONNECT_TIMESTAMP TIMESTAMP NOT NULL,
MON_DISCONNECT_TIMESTAMP TIMESTAMP,
MON_GARBAGE_COLLECTION SMALLINT NOT NULL,
MON_REMOTE_PROCESS VARCHAR(255) CHARACTER SET UNICODE_FSS,
MON_STAT_ID INTEGER NOT NULL,
CONSTRAINT MON_ATTACHMENTS PRIMARY KEY(ID)
);
CREATE INDEX IN_MON_ATTACHMENTS_TIMESTAMP ON
MON_ATTACHMENTS(MON_CONNECT_TIMESTAMP);
CREATE SEQUENCE SQ_MON_ATTACHMENTS_ID;
SET TERM ^ ;
CREATE OR ALTER TRIGGER TG_CONNECT ON CONNECT AS
BEGIN
INSERT INTO MON_ATTACHMENTS(
ID,
MON_ATTACHMENT_ID,
MON_SERVER_PID,
MON_STATE,
MON_ATTACHMENT_NAME,
MON_USER,
MON_ROLE,
MON_REMOTE_PROTOCOL,
MON_REMOTE_ADDRESS,
MON_REMOTE_PID,
MON_CHARACTER_SET_ID,
MON_CONNECT_TIMESTAMP,
MON_GARBAGE_COLLECTION,
MON_REMOTE_PROCESS)
SELECT
NEXT VALUE FOR SQ_MON_ATTACHMENTS_ID,
MON$ATTACHMENT_ID,
MON$SERVER_PID,
MON$STATE,
MON$ATTACHMENT_NAME,
MON$USER,
MON$ROLE,
MON$REMOTE_PROTOCOL,
MON$REMOTE_ADDRESS,
MON$REMOTE_PID,
MON$CHARACTER_SET_ID,
CURRENT_TIMESTAMP,
MON$GARBAGE_COLLECTION,
MON$REMOTE_PROCESS
FROM MON$ATTACHMENTS
WHERE MON$ATTACHMENT_ID = CURRENT_CONNECTION;
END^
CREATE OR ALTER TRIGGER TG_DISCONNECT ON DISCONNECT AS
BEGIN
UPDATE MON_ATTACHMENTS
SET MON_DISCONNECT_TIMESTAMP = CURRENT_TIMESTAMP
WHERE MON_ATTACHMENT_ID = CURRENT_CONNECTION
ORDER BY ID DESC ROWS 1;
END^
--- Fim do SQL ---
Atenciosamente.
Daniel P. Guimarães
Tecnobyte Informática
www.tecnobyte.com.br
Mais detalhes sobre a lista de discussão lista