Monitorar o banco de dados

Delphi

08/10/2006

olá pessoal,
como eu poderia, via programação delphi, ou com algum recurso do próprio BD, verificar se alguma tabela foi alterada, se sofreu uma inserção por exemplo ....

[..]s


Rafael Gomes

Rafael Gomes

Curtidas 0

Respostas

Motta

Motta

08/10/2006

Depende do BD.


GOSTEI 0
Rafael Gomes

Rafael Gomes

08/10/2006

exemplos!??


GOSTEI 0
Macario

Macario

08/10/2006

Ola.

Nos informe o SGBDR, metodo de acesso e IDE que voce faz uso.:idea:


8)


GOSTEI 0
Rafael Gomes

Rafael Gomes

08/10/2006

Estou utilizando Delphi 7/ Turbo Delphi com DBExpress pra acessar varios bancos de dados. Mas o meu foco é em bancos de dados Oracle e SQL Server.

[]s


GOSTEI 0
Rafael Gomes

Rafael Gomes

08/10/2006

up!!


GOSTEI 0
Rafael Gomes

Rafael Gomes

08/10/2006

up!!


GOSTEI 0
Rafael Gomes

Rafael Gomes

08/10/2006

up!


GOSTEI 0
Rafael Gomes

Rafael Gomes

08/10/2006

ninguem pessoal!????
[..]s


GOSTEI 0
Luciano.sul

Luciano.sul

08/10/2006

Meu amigo entra na pagina www.activedelphi.com.br se tu nao tiver cadastro te cadastra e de graca, dai tu faz uma consulta ´DSP´
e ira aparecer no resultado um exemplo que diz: ´Log com DSP´, baixa ele.

E bem legal este exemplo.

Tchau

Luciano Ramos


GOSTEI 0
Rafael Gomes

Rafael Gomes

08/10/2006

obrigado luciano, voi dar uma olhada no exemplo ...
caso alguem tenha mais alguma sugestao eu agradeço!!
:)

[]s


GOSTEI 0
Rafael Gomes

Rafael Gomes

08/10/2006

me desculpem amigos, mas agora, depois olhar o exemplo do Luciano é que percebi que fui mal interpretado.

A ideia nao é simplemente fazer um log das alterações no bd de uma aplicação. Se a aplicação foi desenvolvida por mim, seria muito facil verificar essas alterações e gravar em uma tabela os registros alterados. A ideia é outra. Imaginem que eu tenho uma aplicação qualquer desenvolvida em Delphi. Esta aplicaçao efetua diversas alterações em tabelas de um determinado banco de dados. O que eu quero é desenvolver uma segunda aplicaçao, independente da primeira, que verifique as alterações efetuadas no bd .... eu quero conseguir detectar atraves de um programa Y (desenvolvido por mim), alterações feitas em um BD por uma aplicaçao X (de Terceiros).

Alguma ideia!???

[..]s


GOSTEI 0
Rafael Gomes

Rafael Gomes

08/10/2006

up!


GOSTEI 0
Wagnermarrane

Wagnermarrane

08/10/2006

Caro rafael,

Talvez o ideal seria constriur um tabela simples que posssa monitorar todos os procedimento executados pelos usuário. Crie um função que a toda momento que o usuário executar uma alteração execlusão ou inclusão ela registre nesta tabela, deve ocorrer também uma rotina que faça manutenção por periodo de acordo com o seu volume, pois caso vc naum efetue uma manutenção nesta tabela com o passar do tempo ela diminuir o desempenho do seu banco.

Porém deve-se tomar muito cuidado com uma possivel queda de desempenho do banco.

Por alguma falta de expériencia com bases SQL Server eu acabei criando este artificio para justamente poder encontrar o culpado de uma alteração ou exclusão de um registro importante na minha base.

Qualquer duvida to a disposição.

Abraço

Wagner


GOSTEI 0
Rafael Gomes

Rafael Gomes

08/10/2006

agradeço a todos que responderam o topico até agora ...
mas continuo sem uma resposta.

imaginem o seguinte cenario. Existe uma aplicação qualquer, que utiliza um banco de dados SQL Server por exemplo. Essa aplicação tem suas proprias tabelas, e o aplicativo efetua inserções e alterações nos registros no banco de dados. Eu quero construir uma segunda aplicação, que conecte no mesmo banco de dados e consiga monitorar os registros que sofreram alteração ou foram inseridos. Um detalhe importante é que as aplicações sao independentes, e nao tem nada a ver uma com a outra. Imaginem que a segunda aplicação foi desenvolvido por uma outra pessoa e eu nao tenho siquer o codigo fonte, apenas tenho acesso ao BD e aos registros. Preciso monitorar os registros nesse banco. Caso nao tenha sido claro explico novamente de uma forma diferente.


:)

[..]s


GOSTEI 0
Tiagorocha

Tiagorocha

08/10/2006

Olha, num primeiro momento não vejo outra solução senão a utilização de triggers nas tabelas conforme o colega wagnermarrane disse OU a utilização de um componente SQL Monitor. Me lembro de ter visto uma solução usando SQL Monitor em algum outro lugar, mas no seu caso não sei se resolve.
Não é possível criar uma tabela de log e inserir triggers em todas tabelas?
É só inserir comandos nas triggers para registrar a inserção na tabela de log. Não é isso? Ou você quer interceptar a comunicação do aplicativo de terceiros com a porta do servidor de banco de dados?


GOSTEI 0
Rafael Gomes

Rafael Gomes

08/10/2006

o que eu quero é monitorar alteraçoes feitas em registros por aplicativos de terceiros. No primeiro momento pensei em trigers, mas nao gostei muito da solucao. Vou ver se com SQL monitor é possivel fazer da forma como eu quero.

caso alguem tenha outra ideia diferente!! :)

[..]s


GOSTEI 0
Leonardoffsilva

Leonardoffsilva

08/10/2006

Amigo, no meu sistema, sempre tenho uma tabela de log para cada tabela do sistema. Cada tabela tem uma trigger associada a um evento (Insert, Update, Delete). com isso, monitoro o usuario, da data e hora da atualização e os dados anterior a atualização. Sem isso, não é possível garantir seus dados. Principalmente porque sua base pode ser acessada por aplicativos de terceiros.


GOSTEI 0
Leonardoffsilva

Leonardoffsilva

08/10/2006

Ha, esqueci. As tabelas de Log não são visiveis aos usuários normais. Só ao administrador. Quando muito, os usuários podem apenas ler os registros, mas é vetado a inserção ou alteração deses dados. Com isso, é possivel fazer um rollback de toda a operação de um usuário em um determinado período. Pense nisso.


GOSTEI 0
Rafael Gomes

Rafael Gomes

08/10/2006

continuam sem entender o problema hehe :( ,
por favor peço que leiam todo topico para uma melhor compreensao ...

existe uma aplicacao qualquer, que se conecta em um banco de dados SQL Server por exemplo, eu nao tenho o codigo fonte dessa aplicação, nao sei quem desenvolveu, eu apenas consigo me conectar no mesmo database que esta aplicaçao usa. Minha tarefa é monitorar as alterações dos registros nesse database atraves de uma aplicação criada por mim ...

hehe, ultima tentativa ... :(

[..]s


GOSTEI 0
Aerreira

Aerreira

08/10/2006

Rafael,

Ao meu ver, acho que precisará replicar todo o banco de dados da seguite forma:

- Inicialmente, faça uma cópia fiel do banco que precisa monitorar para outro local ou outro nome.
- Sua aplicação deverá abrir os dois bancos, o original e a cópia.
- Sua aplicação precisará varrer cada tabela do banco original e verificar se existe no banco cópia que foi feito antes (outra hora ou mesmo outro dia).
- Caso não exista, então esse registro foi inserido após a cópia inicial feita.
- Neste caso, você registra essa informação em algum lugar (outra tabela ou um relatório) e inclui o registo no seu banco cópia.
- Continua o processo em todas as tabelas.

O banco cópia não precisa mais ser copiado.
Na próxima vez que rodar sua aplicação de monitoramento, os dois bancos serão novamente comparados, e quaisquer novos registros inseridos no banco original aparecerão como novos, e consequentemente aparecerão no log de monitoramento.

[i:f9cd5f3c86]Relí suas mensagens, e ví que precisa também monitorar alterações, então não bastará verificar se o registro é novo, precisará também saber se o conteúdo de cada campo de cada registro de cada tabela foi alterado ou não. Com isso seu processo ficará bem mais complicado, mas nada impossivel de ser feito não.[/i:f9cd5f3c86]

Será que consegui entender seu problema?


GOSTEI 0
Rafael Gomes

Rafael Gomes

08/10/2006

olá aerrira, finalmente alguem compreendeu de forma correta o meu problema. Eu estudei essa solução e talvez nao seja viavel, mas já é um bom começo!! obrigado pela atenção!!

[..]s


GOSTEI 0
Aerreira

Aerreira

08/10/2006

[quote:01ca032ad9=´Rafael Gomes´]olá aerrira, finalmente alguem compreendeu de forma correta o meu problema. Eu estudei essa solução e talvez nao seja viavel, mas já é um bom começo!! obrigado pela atenção!!
[..]s[/quote:01ca032ad9]
Talvez não seja viável... ok, mas tente nos explicar porque pode não ser viável, quais os fatores que impedem? Talvez mais alguem lhe traga alguma solução para esse impedimento.


GOSTEI 0
POSTAR