none
Checar integridade de banco de dados Access RRS feed

  • Discussão Geral

  • Olá à todos,

    Estou desenvolvendo um catálogo portável para catalogar meus filmes, seriados e vídeos aulas, no qual estou utilizando um banco de dados ACCESS para armazenar as informações.

    Agora eu gostaria de adicionar um backup automático para o banco de dados para quando eu fechar o programa e se houver alguma alteração ele simplesmente fazer uma cópia do banco para um outro local.
    Alguém saberia se existe algum método de checar a integridade física do banco (ACCESS) via C# após ser feito uma cópia do mesmo? Atualmente faço isso manualmente e quero automatizar o processo, porém preciso ter certeza que não estou fazendo uma cópia de um banco corrompido.

    quarta-feira, 4 de janeiro de 2017 02:13

Todas as Respostas

  • Boa tarde!

    É necessário trabalhar diretamente com o C#? 

    Para este caso indicaria trabalhar com triggers. Através dela é possível executar um comando quando usuário fizer algum UPDATE, DELETE ou INSERT. 

    Por exemplo: 
    Você pode definir o gatilho para antes, no momento ou depois da inserção ou mesclar. No momento você pode confirma, validar as informações que estão para ser gravadas no BD e depois você pode por exemplo, realizar o BACKUP.

    No momento que código estiver executando e realizar alguma coisa no banco, vamos supor UPDATE, a trigger vai ser chamada caso tenha definido antes, depois ou no momento, e esse processo não atrapalha o funcionamento do seu programa, pois é do proprio BD. 

    Sendo assim, a trigger pode ir em uma outra tabela e setar um valor("S - Sim, alterado") que houve uma modificação e essa informação gravou sem erro. 

    E ao fechar o seu Programa você vai na tabela e seta para("N - Não, sem alteração"), mas antes do código realizar essa alteração, uma trigger entra em ação e verifica se o campo contém o valor "S - Sim, alterado", caso encontre ele faz o Backup. Caso não encontre ele deixa a vida seguir. 

    Desta forma, o código que vai fazer o Backup do Banco de Dado será da propria linguagem do BANCO, sem a necessidade de tratar no código da aplicação. O código da aplicação, apenas faz a inserção normalmente nas tabelas e a trigger cuida do resto. No final, o código apenas tem que atualizar um campo de uma tabela, para a trigger fazer o Backup. Claro que você pode escolher receber a resposta da trigger para o programa finalizar ou finalizar o programa sem a resposta e quando você acessar o programa novamente, em uma aba de backup, você terá a informação quando foi o ultimo Backup.

    OBS: Essa é minha dica, caso você aceite, irei colocar o código para fazer o BACKUP do banco através da linguagem do banco.


    Atenciosamente,

    quinta-feira, 2 de fevereiro de 2017 17:38
  • Já pesquisei bastante quanto a isso e infelizmente não há nenhuma forma de se checar a integridade dos bancos de dados access. O problema é que estou utilizando alguns campos do tipo Memorando(Memo field) e ele é bem propenso a corromper, principalmente se fizer muitos selects seguidos na base de dados. Resolvi isso utilizando um Dataset, agora estou trabalhando com os dados diretamente na memória. Quanto ao backup já resolvi, compacto e salvo em outra pasta com a data e hora.  

    Segue um link dos riscos que envolve o uso do tipo Memorando (memo field) caso alguém se interesse.

    https://bytes.com/topic/access/insights/947191-risks-involved-when-using-memo-fields-ms-access-databases

    Muito obrigado pela ajuda.

    Abraço;

    quinta-feira, 2 de fevereiro de 2017 19:32