25 de March de 2019 10 de August de 2020 Délio DaminLeave a Comment on Linguagem SQL: Capítulo 4 – Backup.
A principal tarefa de um administrador de Banco de Dados não é apenas garantir que os dados sejam inseridos, mas também que estes dados continuem existindo. Independente do sistema de contingência, o Backup é indispensável. Neste capítulo, discutiremos como o sistema trabalha e qual o tamanho do banco de dados para definir a melhor política de backup.
Existem dois tipos de Backup:
Full: Realiza o backup de todos os dados e de parte do log, ou seja, contém todos os dados de um banco de dados ou de um conjunto de grupos de arquivos, além do log para permitir a recuperação desses dados.
Differential: Executa o backup da parte do banco de dados que foi modificada desde o último backup full. Este backup de dados baseia-se no backup completo mais recente de um banco de dados completo ou parcial, ou em um conjunto de arquivos de dados ou grupos de arquivos (a base diferencial) que contém somente as extensões de dados alterados desde a base diferencial. Um backup diferencial parcial registra apenas as extensões de dados que foram alteradas nos grupos de arquivos desde o backup parcial anterior, conhecido como a base para o diferencial.
1) Backup através da interface gráfica
É possível realizar a maioria dos procedimentos de backup através de uma interface gráfica, como podemos visualizar na imagem abaixo (botão direito, Database – Tasks – Back Up):
Figura 1: Back Up Database
Importante recurso para recuperação da informação. Um banco de dados pode ser retornado apenas a partir do backup full (completo). O processo de restore deve ser feito com frequência no ambiente de teste para evitar falhas, checando a consistência do processo. Sempre que um restore é feito, o banco de dados fica indisponível para acesso dos usuários, como podemos visualizar na imagem abaixo (Tasks – Restore – Database):
Figura 2: Restore Database
3) Backup através de comandos
É possível também gerar um backup do Banco de Dados no SQL Server via E3 através de comandos. Para isso, através do E3Studio, deve-se criar uma Consulta vinculada ao Banco de Dados e editá-la com o comando SQL Backup Database.
Por exemplo, um consulta chamada Consulta1 com o comando SQL de backup full para salvar na pasta C:\Backup o arquivos de backup 'teste.bak':
BACKUP DATABASE [NomeDoBancoDeDados]TO DISK = 'c:\Backup\teste.bak'
Após isto, deve-se criar um script para executar esta Consulta através do método Execute(). Por exemplo, o script abaixo está sendo executado no evento Click de um botão que está na tela:
Screen.Item("Consulta1").Execute()
4) Restauração através de comandos
Uma vez que o backup do banco SQL tenha sido realizado, para restaurar o arquivo .BAK gerado, siga estes procedimentos:
2. Clique na opção New Query ou no menu File-New-Query with current connection.
3. Na janela da consulta, digite o comando:
FROM DISK = 'c:\Backup\testesql.bak'
4. Clique em Execute; o resultado será a exibição dos arquivos .MDF e .LDF com o respectivo nome lógico de cada arquivo.
5. Crie uma nova consulta, repetindo o passo 2.
6. Digite o comando a seguir:
RESTORE DATABASE teste
WITH MOVE 'teste' TO 'c:\Backup\teste.MDF', MOVE 'teste_log' TO 'c:\Backup\teste_Log.LDF'
7. Clique em Execute (as mensagens referentes à restauração do seu backup serão exibidas).
5) Criando o Agendamento de Backup Full
Para criar um agendamento de Backup será necessário utilizar o SQL Server Agent. O SQL Server Agent é um serviço do Microsoft Windows que permite automatizar algumas tarefas administrativas. O SQL Server Agent executa trabalhos, monitora o SQL Server e processa alertas. O serviço do SQL Server Agent deve estar em execução para que os trabalhos administrativos locais ou multisservidor possam ser executados automaticamente.
Para criar um agendamento de backup que realizará um Backup Full de determinado banco de dados todos os dias às 01:00 AM, siga os procedimentos abaixo:
1. Na pasta Jobs, abaixo do SQL Server Agent, clique com o botão direito do mouse e selecione New Job.
Figura 3: Job
2. Na janela New Job, guia General, escreva Backup Full em Name.
Figura 4: New Job
3. Na aba Steps, clique em New.
Figura 5: Aba Steps
4. Na janela New Job Step, digite Backup Full em Step Name.
Figura 6: New Job Step
5. No campo Command, escreva:
BACKUPDATABASE DBNAME TO DISK = 'C:\BACKUP\DBNAME-FULL.BAK' WITH INIT
A opção INIT sobrescreve o arquivo anterior; caso não seja utilizado, o arquivo de destino sofrerá Append, ou seja, será adicionado ao backup anterior.
7. Na janela New Job, aba Schedules, clique em New.
8. Na janela New Job Schedule, escreva Backup Full em Name.
Figura 7: New Job Schedule
9. Em Frequency, na opção Occurs, escolha Daily.
10. Em Daily Frequency, na opção Occurs once at, escolha 01:00:00
11. Clique em OK duas vezes.
12. Na pasta SQL Server Agent | Jobs, o agendamento Backup Full já pode ser testado, clicando com o botão direito do mouse sobre o objeto e selecionando Start At.
Figura 8: Start Jobs
NOTA: as versões Express do SQL Server não possuem suporte ao SQL Server Agent. Para verificar a versão do SQL Server, execute o comando select @@version.