Monitorar o banco de dados
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
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
Curtidas 0
Respostas
Motta
08/10/2006
Depende do BD.
GOSTEI 0
Rafael Gomes
08/10/2006
exemplos!??
GOSTEI 0
Macario
08/10/2006
Ola.
Nos informe o SGBDR, metodo de acesso e IDE que voce faz uso.:idea:
8)
Nos informe o SGBDR, metodo de acesso e IDE que voce faz uso.:idea:
8)
GOSTEI 0
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
[]s
GOSTEI 0
Rafael Gomes
08/10/2006
up!!
GOSTEI 0
Rafael Gomes
08/10/2006
up!!
GOSTEI 0
Rafael Gomes
08/10/2006
up!
GOSTEI 0
Rafael Gomes
08/10/2006
ninguem pessoal!????
[..]s
[..]s
GOSTEI 0
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
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
08/10/2006
obrigado luciano, voi dar uma olhada no exemplo ...
caso alguem tenha mais alguma sugestao eu agradeço!!
:)
[]s
caso alguem tenha mais alguma sugestao eu agradeço!!
:)
[]s
GOSTEI 0
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
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
08/10/2006
up!
GOSTEI 0
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
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
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
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
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?
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
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
caso alguem tenha outra ideia diferente!! :)
[..]s
GOSTEI 0
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
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
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
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
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?
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
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
[..]s
GOSTEI 0
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.
[..]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