Temos um banco de dados Microsoft Access dividido em backend / frontend. O que estou procurando é poder fazer backup automático desses arquivos diariamente ou semanalmente – qual é a melhor maneira de fazer isso? Não queremos ter que nos preocupar com backups do banco de dados, apenas saiba que estão ocorrendo automaticamente de acordo com uma programação.
Obrigado.
Resposta
(Pegando emprestado minha resposta anterior aqui …)
re: realmente realizando o backup
Fazer backup de um banco de dados nativo do Access é simplesmente uma questão de copiar todo o arquivo do banco de dados ( .mdb para Access_2003 e anterior, .accdb para Access_2007 e posterior). Qualquer linguagem de script funcionaria, até mesmo um arquivo de lote simples do Windows que faz algo como
copy /Y d:\apps\databases\mydatabase.accdb z:\backups\databases\*.*
re: agendamento automático do backup
O Agendador de tarefas do Windows pode cuidar disso para você Depois de criar seu script para copiar o (s) arquivo (s) de banco de dados, você pode criar uma tarefa agendada para executá-lo periodicamente. Consulte o artigo MSDN Usando o Agendador de Tarefas (Windows) para obter mais informações.
Comentários
- que ' é basicamente o que eu ' m depois. Existe algum problema com o banco de dados sendo dividido em front-end / back-end? E se ele ' estiver em uso no momento do backup? Obrigado.
- [1] re: frontend / backend – O arquivo de backend é aquele que muda constantemente, de forma que ' é o que precisa (mais ) backups regulares. [2] re: arquivo (pode estar) em uso – Não há uma resposta simples para essa pergunta. Os bancos de dados de arquivos compartilhados não têm as mesmas vantagens que os bancos de dados cliente-servidor nesse aspecto.
- O que isso significa? É possível copiá-lo durante o uso?
- @Parhs Sim, é possível copiar um arquivo de banco de dados do Access enquanto ele está em uso (a menos que tenha sido aberto como Exclusivo). No entanto, copiar qualquer arquivo enquanto ele está ativamente em uso geralmente não é uma boa ideia.
- @Parhs Embora seja muito improvável que o arquivo de origem (original) seja corrompido, o arquivo de destino pode não ser um backup confiável se gravações estiverem ocorrendo no arquivo de origem enquanto ele está sendo copiado.
Resposta
Você pode gravar uma sub-rotina para fazer backup do banco de dados em uma pasta especificada e executar essa sub-rotina quando o banco de dados for iniciado. Existem muitas maneiras de fazer isso, mas eu pessoalmente uso o seguinte:
Function fMakeBackup() As Boolean Dim Source As String Dim Target As String Dim retval As Integer Source = CurrentDb.Name Target = "Z:\My Apps\Backups\YourFielName" Target = Target & Format(Date, "mm-dd") & " " Target = Target & Format(Time, "hh-mm") & ".accdb" " create the backup retval = 0 Dim objFSO As Object Set objFSO = CreateObject("Scripting.FileSystemObject") retval = objFSO.CopyFile(Source, Target, True) Set objFSO = Nothing End Function