Banco de Dados

Ξ 4 comentários

Backup e Restore SQL Server – Parte 1

publicado por Fábio Oliveira

Figura - Backup e Restore SQL Server - Parte 1Hoje trabalharemos em cima de como fazer um backup e como restaurar uma base de dados em um nível mais básico. Trabalharemos com os tipos de backup FULL, DIFFERENTIAL e T-LOG.

  • Backup Full: Tem como finalidade realizar o backup de tudo que está armazenado no determinado banco de dados, características, atributos do objeto de banco de dados e etc.
  • Backup Differential: Só pode ser usado quando há um backup full já feito e em modo de recuperação FULL. Ele armazena apenas o que foi alterado após o backup full. Ele é mais usado que o backup T-LOG, uma vez que o backup T-LOG armazena muitas transações, e você só pode restaurar um backup do tipo T-LOG se você tiver todos os arquivos.

Vamos ao exemplo de um backup full, e um backup differential:

CREATE DATABASE TESTEBACKUP
GO

USE TESTEBACKUP
GO

CREATE TABLE TABELA
(
COL1 INT IDENTITY,
COL2 VARCHAR(10)
)
GO

INSERT INTO TABELA VALUES (‘CADASTRO 1’)
INSERT INTO TABELA VALUES (‘CADASTRO 2’)
INSERT INTO TABELA VALUES (‘CADASTRO 3’)
INSERT INTO TABELA VALUES (‘CADASTRO 4’)
INSERT INTO TABELA VALUES (‘CADASTRO 5’)
INSERT INTO TABELA VALUES (‘CADASTRO 6’)
INSERT INTO TABELA VALUES (‘CADASTRO 7’)

ALTER DATABASE TESTEBACKUP
SET RECOVERY FULL

Nossa base tem 7 registros, coloquei o banco em modo de recuperação FULL, pois se tiver em modo SIMPLE, não conseguiríamos fazer nosso backup differential. Vamos fazer nosso primeiro backup full:

BACKUP DATABASE <NOME DO BANCO> TO DISK = <CAMINHO PARA SER SALVO>
BACKUP DATABASE TESTEBACKUP TO DISK = ‘D:\BACKUPS\BACKUPFULL.BAK’

Normalmente utilizamos a extensão .bak ao fazer um backup do tipo full.
Feito nosso backup, vamos fazer uma alteração no nosso banco:

UPDATE TABELA SET COL2 = ‘SQL SERVER’
WHERE COL1 IN (1,2,3)

Select1

Perceba que alterei a COL2 dos 3 primeiros registros, vamos aplicar agora um backup differential, onde ele irá fazer backup do que foi alterado desde o último backup full:

BACKUP DATABASE TESTEBACKUP TO DISK = ‘D:\BACKUPS\BACKUPDIFF1.BAK’
WITH DIFFERENTIAL

Select2

Vamos fazer mais uma alteração no nosso banco:

DELETE FROM TABELA
WHERE COL1 IN (6,7)

Agora nossa tabela ficou desta forma:

Select3

Após esta alteração de deletar alguns registros, vamos fazer mais um backup differential:

BACKUP DATABASE TESTEBACKUP TO DISK = ‘D:\BACKUPS\BACKUPDIFF2.BAK’
WITH DIFFERENTIAL

Select4

 

Ou seja, no primeiro backup differential, temos gravado UPDATE que demos na tabela, e no segundo, temos o DELETE. E se eu perder meu primeiro backup differential? Perderei também a instrução DELETE? A resposta é NÃO! Uma vez em que o backup differential armazena tudo que foi modificado desde o último backup full! Vamos ao teste, vamos deletar nossa base e restaurar apenas o backup full e o segundo backup differential:

USE MASTER
GO
DROP DATABASE TESTEBACKUP
GO

Usei o master pois não podemos deletar um banco em que estejamos conectados.

Vamos restaurar primeiramente nosso backup FULL:

RESTORE DATABASE TESTEBACKUP FROM DISK = ‘D:\BACKUPS\BACKUPFULL.BAK’
WITH NORECOVERY

Select5

Veja que utilizei a instrução WITH NORECOVERY, para dizer ao SQL Server que este banco ainda está em processo de restauração, pois falta restaurarmos o backup differential e que ninguém poderá ainda se conectar a este banco. Vamos restaurar o nosso segundo backup differential:

RESTORE DATABASE TESTEBACKUP FROM DISK = ‘D:\BACKUPS\BACKUPDIFF2.BAK’
WITH RECOVERY

Select6

Nosso banco está restaurado completamente, a instrução WITH RECOVERY diz que não haverá outro processo de restauração após este. Lembre-se que restaurei apenas o segundo backup differential, ignorando a existência do primeiro. Agora vamos verificar nossa tabela:

USE TESTEBACKUP
GO
SELECT * FROM TABELA
GO

Select7

Todas as alterações que fizemos desde o último backup full, foram recuperadas com sucesso. Esta é a grande sacada do backup differential: não precisamos de backups differential anteriores para podermos recuperar tudo que foi alterado na nossa base, precisamos apenas do último. A não ser que você queira restaurar apenas o que foi alterado no primeiro backup differential.

Na parte 2, trabalharemos com o backup T-LOG.

Autor

Formado em Análise e Desenvolvimento de Sistemas, 22 anos, trabalho atualmente com suporte à sistemas de varejo, estudante da plataforma SQL Server e autor de artigos no site Guia DBA.

Fábio Oliveira

Comentários

4 Comments

  • O caminho para ser um programador é começar a envolver se com esse tipo de assunto? Como esse backup? Se alguém puder responda.? rodolfo.benenati@aluno.univesp.br

    • Olá Rodolfo,
      O início para ser um programador SQL Server, você deverá procurar um curso básico e ir avançando gradativamente.
      Este artigo tem como objetivo explicar, e apresentar exemplos dos tipos de backups existentes no SQL Server.
      Caso tenha alguma dúvida pode entrar em contato.
      Abraços e bons estudos!

    • Olá Sr. Fábio!
      Qual o seu contato?

      O meu é 16-99722-2228 vivo sp (WhatesApp).

  • Parabéns meu amigo.

You must be logged in to post a comment.

Busca

Patrocínio

Publicidade



Siga-nos!

Newsletter: Inscreva-se

Para se inscrever em nossa newsletter preencha o formulário.

Artigos Recentes