restaurando um backup via script sql

4
Diário de um DBA SQL Server & Banco de Dados Search for: Restaurar Backup via Script Existem três tipos básicos de backups no SQL Server: o backup completo, o backup diferencial e o backup incremental. O dois últimos sempre trabalham em conjunto com o backup completo. Uma estratégia de backup é algo muito particular de cada negócio; em alguns ambientes críticos é inadimissível a perda de um minuto de informação, já em outros lugares, na ocasião de uma falha, um backup do dia anterior é a solução ideal; logo, a forma como mesclar os diferentes tipos de backups é uma questão a ser analisada (e testada!) com muito critério. No entanto de uma coisa temos certeza: toda estratégia de backup incluirá um backup completo (comumente chamado de backup FULL) e neste texto iremos focar na recuperação (via script) de um backup completo no SQL Server; para isso utilizaremos como base dois cenários: O primeiro cenário abordará o restore de um backup FULL sobre a base original (do backup), por exemplo, sua base de dados atual sofreu alterações inadequadas e agora precisa da restauração do último backup para reaver os dados anteriores. No segundo cenário iremos visualizar um DBA que recebe um backup completo de um cliente e precisa restaurá-lo em outro ambiente, por exemplo, para sua equipe de desenvolvimento. CENÁRIO 1 Temos aqui um arquivo de backup chamado AdventuresWorks_FULL.bak. Antes de restaurá-lo precisamos verificar qual o conteúdo desse arquivo físico e se o backup existente irá atender a necessidade do restore; para isso utilizaremos o seguinte comando: Veja o resultado: No resultado da execução do comando RESTORE HEADERONLY podemos identificar que o arquivo em questão contém três backups (sim! um arquivo físico pode conter inúmeros backups de uma mesma base). Observe a posição de cada backup dentro do arquivo (campo Position), o tamanho de cada um (BackupSize) e suas respectivas datas (BackupStartDate). No nosso exemplo vamos restaurar o backup do dia 03 de Fevereiro , logo, o backup a ser restaurado será o da posição 2 (dois). Vamos ao script: A base de dados a ser restaurada é a AdventureWorks, o arquivo de backup está localizado no endereço: C:\LabRestore\AdventuresWorks_FULL.bak. O backup que será restaurado está na posição 2 deste arquivo (FILE = 2). Como a base já existe é necessário sobrescrevê-la, para isto utilizamos a opção REPLACE. O STATS mostrará o progresso da restauração em intervalos de 10 em 10%. Search 1 restore headeronly from disk ='C:\LabRestore\AdventuresWorks_FULL.bak' 1 USE MASTER 2 3 GO 4 5 RESTORE DATABASE AdventureWorks 6 7 FROM DISK = 'C:\LabRestore\AdventuresWorks_FULL.bak' 8 9 WITH FILE = 2, REPLACE, STATS = 10

Upload: 8ctano

Post on 25-Jun-2015

570 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Restaurando Um Backup via Script SQL

Diário de um DBA SQL Server & Banco de Dados

Search for:

Restaurar Backup via Script

Existem três tipos básicos de backups no SQL Server: o backup completo, o backup diferencial e o backup incremental. O dois últimos sempre trabalham em conjunto com o backup completo.

Uma estratégia de backup é algo muito particular de cada negócio; em alguns ambientes críticos é inadimissível a perda de um minuto de informação, já em outros lugares, na ocasião de uma falha, um backup do dia anterior é a solução ideal; logo, a forma como mesclar os diferentes tipos de backups é uma questão a ser analisada (e testada!) com muito critério.

No entanto de uma coisa temos certeza: toda estratégia de backup incluirá um backup completo (comumente chamado de backup FULL) e neste texto iremos focar na recuperação (via script) de um backup completo no SQL Server; para isso utilizaremos como base dois cenários:

� O primeiro cenário abordará o restore de um backup FULL sobre a base original (do backup), por exemplo, sua base de dados atual sofreu alterações inadequadas e agora precisa da restauração do último backup para reaver os dados anteriores.

� No segundo cenário iremos visualizar um DBA que recebe um backup completo de um cliente e precisa restaurá-lo em outro ambiente, por exemplo, para sua equipe de desenvolvimento.

CENÁRIO 1

Temos aqui um arquivo de backup chamado AdventuresWorks_FULL.bak. Antes de restaurá-lo precisamos verificar qual o conteúdo desse arquivo físico e se o backup existente irá atender a necessidade do restore; para isso utilizaremos o seguinte comando:

Veja o resultado:

No resultado da execução do comando RESTORE HEADERONLY podemos identificar que o arquivo em questão contém três backups (sim! um arquivo físico pode conter inúmeros backups de uma mesma base). Observe a posição de cada backup dentro do arquivo (campo Position), o tamanho de cada um (BackupSize) e suas respectivas datas (BackupStartDate).

No nosso exemplo vamos restaurar o backup do dia 03 de Fevereiro, logo, o backup a ser restaurado será o da posição 2 (dois). Vamos ao script:

A base de dados a ser restaurada é a AdventureWorks, o arquivo de backup está localizado no endereço: C:\LabRestore\AdventuresWorks_FULL.bak. O backup que será restaurado está na posição 2 deste arquivo (FILE = 2). Como a base já existe é necessário sobrescrevê-la, para isto utilizamos a opção REPLACE. O STATS mostrará o progresso da restauração em intervalos de 10 em 10%.

Search

1 restore headeronly from disk ='C:\LabRestore\AdventuresWorks_FULL.bak'

1 USE MASTER

2

3 GO

4 5 RESTORE DATABASE AdventureWorks

6

7 FROM DISK = 'C:\LabRestore\AdventuresWorks_FULL.bak'

8 9 WITH FILE = 2, REPLACE, STATS = 10

Page 2: Restaurando Um Backup via Script SQL

Importante: Numa operação de restore a base não deve estar em uso por nenhum usuário (inclusive você), por isso antes de iniciar o script direcionamos a sessão para o database Master. Se a base estiver em uso, a seguinte mensagem de erro será exibida:

Msg 3101, Level 16, State 1, Line 1

Exclusive access could not be obtained because the database is in use.

Se tudo estiver ok, ao final da execução do script você verá uma mensagem similar a esta:

RESTORE DATABASE successfully processed 22514 pages in 10.209 seconds (18.065 MB/sec).

CENÁRIO 2

Neste cenário o DBA deverá restaurar um backup completo recebido de um cliente externo. O arquivo de backup está identificado como SistemaX_FULL.bak e será restaurado no ambiente de desenvolvimento que é composto por um servidor com um único disco (C:\).

Vamos analisar o conteúdo do arquivo com o RESTORE HEADERONLY:

Veja o resultado:

No resultado acima verificamos que existe um único backup neste arquivo. A base do cliente (campo DatabaseName) está identificada por SistemaX e podemos verificar também outros dados como o tamanho do backup e data.

Até aqui tudo bem, mas neste cenário precisamos analisar novos elementos, isso porque a base em questão ainda não existe e ao efetuar a restauração o SQL Server irá trazer além dos objetos deste banco (tabelas, procedures, triggers) suas configurações originais como: endereço dos arquivos físico de dados e log, modo de recovery, etc. Para verificar o estado de algumas destas propriedades podemos utilizar o comando RESTORE FILELISTONLY:

Veja o resultado:

Observe que a base do cliente e seus respectivos arquivos de dados e log estão localizados em discos diferentes. Neste caso, se o DBA realizar um restore comum (como o script utilizado no exemplo anterior) o SQL Server tentará alocar estes arquivos em seus caminhos de origem, logo precisamos alterar este comportamento, já que neste cenário o servidor onde será realizado o restore só possui um disco. Veja o comando:

A base de dados a ser restaurada é a SistemaX e o arquivo de backup está em: C:\LabRestore\SistemaX_FULL.bak. Observe que adicionamos a opção MOVE ; esta opção direciona os arquivos de dados e log para um novo caminho. O restante não muda; continuo utilizando o STATS e desta vez não precisamos do REPLACE já que a base não existia.

É importante destacar que os comandos RESTORE FILELISTONLY e RESTORE HEADERONLY não são obrigatórios num processo de restauração de banco; eles são comandos que recuperam informações sobre os arquivos de backup e estas informações podem auxiliar o DBA no processo de restauração.

1 restore headeronly from disk = 'C:\LabRestore\SistemaX_FULL.bak'

1 restore filelistonly from disk = 'C:\LabRestore\SistemaX_FULL.bak'

01 USE MASTER

02 03 GO

04

05 RESTORE DATABASE SistemaX

06 FROM DISK = 'C:\LabRestore\SistemaX_FULL.bak'07 WITH

08 MOVE 'SistemaX' TO 'C:\LabRestore\SistemaX.mdf',

09 MOVE 'SistemaX_log' TO 'C:\LabRestore\SistemaX_log.ldf',

10 STATS = 10

Page 3: Restaurando Um Backup via Script SQL

Existem outros comandos similares, como o RESTORE VERIFYONLY que verifica se o arquivo de backup está legível.

CONCLUSÃO

Como podemos verificar, o restore de um backup full, via script não é difícil, basta conhecer os comandos certos para recuperar informações sobre o conteúdo do arquivo de backup; estas informações irão auxiliar o usuário na construção do comando de restore.

Nos próximos posts iremos abordar o restore de backups diferenciais e log. Até +

Bom trabalho!

Posts Relacionados

� Backup compactado � Automatizando tarefas via script � Configurar instância SQL via script � Base de dados virtual � SQL Server via prompt de comando? � DBA Checklist - Segurança � DBA Checklist - Sobre a profissão e a rotina

Tags: Backup, restaurar backup, Restore, script, Sql Server

This entry was posted on Thursday, February 11th, 2010 at 10:59 am and is filed under Vida Real. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

Leave a Reply

Name

Mail (will not be published)

Website

� Subscribe: Entries | Comments

� Posts Recentes

� Registrando modificações com o CDC � DML, DDL?!? O que é isso? � Livros � Oportunidade: Students to Business � Backup compactado � T-SQL – Mesclando dados � SQL Injection :) � SQL Server 2008 R2 Express Edition

� Twitter

� @leonoar @renatopinheiro O que a gente sabe fazer melhor: improvisation :D 2010/11/09 � Novo post falando um pouco sobre CDC: http://silasmendes.com/dba/cdc-change-data-capture #sqlserver

2010/11/09 � Sacanagem com o cara: http://tvuol.tv/bc19 rsss 2010/11/03 � Melhore suas apresentações: http://migre.me/1Pwer Apresentador Power Point: R$ 39,50 + Frete. 2010/10/28 � @janapaganucci http://twitpic.com/2tckfl - hhehehe... perfect :D 2010/10/27

Submit Comment

Page 4: Restaurando Um Backup via Script SQL

� Blogroll

� DBA – Fábio Telles � DBA – Fabrício Lima � DBA – Felipe Santana � DBA – Gustavo Maia � DBA – Laerte Junior � DBA – Leonardo Lopes � DBA – Luti � DBA – Salvador Scardua � INFRA – Fabio Hara � INFRA – Rodolfo Rodrigues � MCDBA Brasil

� Downloads

� Database AdventureWorks � Software – Conversor SQL

� Outros

� Assoc. Comunitária Monte Azul � Copa Microsoft 2010 � Nerdson � Triagem

� Arquivo

� Ouvindo...

© 2010. Diário de um DBA. All rights reserved. Powered by WordPress & SimpleX theme.

Select Month

17 hours ago

The Beatles - Live and Let Die

17 hours ago

Tihuana - Tropa De Elite 2010

18 hours ago

Cazuza - Brasil

18 hours ago

Pedro Bromfmam - Invasão Do Dona Marta (Instrumental)

18 hours ago

Mc Júnior e Mc Leonardo - Tá Tudo Errado

18 hours ago

Tihuana - Comboio do Terror