quarta-feira, 8 de setembro de 2010

Comandos RESTORE II

Continuando ainda com os comandos RESTORE, não podia deixar de comentar sobre o comando para voltar um backup, ou RESTORE DATABASE.

No SQL Server, o processo para voltar um backup é muito tranquilo. Temos uma ferramenta gráfica bem intuitiva que é o Management Studio (SQL 2005 e 2008).

Contudo, podemos ter um questionamento do outro post: "Qual o tamanho exato dos arquivos de dados e de log?" Porque deste questionamento....

Hoje nem tanto, devido ao baixo custo de espaço em HD's que não é tão pesado. Mas num passado não muito distante fazer um upgrade em estações e/ou servidores era (e ainda é um pouco....) uma barreira em várias corporações. Falou em custo a empresa não quer nem ouvir!!!! kkkkkkk....

Mas o intuito deste post é tentar suprir um pouco destes problemas de espaço. Vamos a um exemplo prático...

Temos uma empresa que presta suporte a vários clientes que usam bases de dados SQL Server. Um dia um desses clientes entra em contato informando um sério problema em seu sistema. A equipe de suporte não consegue resolver o problema do cliente e solicita sua base de dados para uma analise mais aprofundada da situação tentando simular o mesmo ambiente do cliente.

Entretanto, a base chega com um tamanho de 50GB e ao mandar restaurar pelo Management Studio ocorre o erro de espaço em disco insuficiente.

Acredito que o exemplo acima já deve ter ocorrido com muitaaaaa gente...

A resposta para solucionar esta questão vem com outra pergunta: Tenho alguma outra máquina (digo: Qualquer outra máquina!!!) com este espaço de 50GB disponiveis? Se a resposta é SIM, excelente!!!! Problema resolvido. Basta copiar o arquivo de 50GB para a outra máquina e pronto!!!!!

Mas.....NÃOOOOOOOOOO....Resposta errada!!!! Assim fica muito fácil.....Vamos dificultar um pouco...hehehehe

O que iremos fazer é uma restauração pela rede. Como????? Através do comando RESTORE DATABASE.

Inspirado no nosso exemplo vamos montar a sintaxe do comando:

RESTORE DATABASE BaseCliente FROM DISK = N'\\SERVIDOR1\BASECLIENTE\Backup.bak'
WITH

MOVE N'Oficial_Data' TO N'E:\ClienteX\Oficialdata1.mdf',
MOVE N'Oficial2_Log' TO N'E:\ClienteX\Oficial_log2.ldf',

NOUNLOAD, STATS = 10

Explicando o comando:

1) "RESTORE DATABASE BaseCliente"...Onde 'BaseCliente' é o nome que vou dar para a base de dados que irei restaurar.

2) "FROM DISK = N'\\SERVIDOR1\BASECLIENTE\Backup.bak'"....Onde '\\SERVIDOR1\BASECLIENTE\Backup.bak' é o caminho de rede onde está o arquivo de backup que o cliente enviou.

3) "MOVE N'Oficial_Data' e MOVE N'Oficial2_Log'"....Onde 'Oficial_Data' e
'Oficial2_Log' são os nomes lógicos que vieram na base. Para saber estes nomes use o comando RESTORE FILELISTONLY do último post.

4) "'E:\ClienteX\Oficialdata1.mdf' e 'E:\ClienteX\Oficial_log2.ldf'"....onde esta descrição é o caminho que irá salvar os arquivos de dados e de log. Caso você queira, este caminho também poderá ser salvo em uma outra máquina, basta informar o caminho de rede desejado.

Lembrando que onde envolver um caminho de rede, é necessário a sua devida permissão de compartilhamento.

Então com o comando acima podemos restaurar uma base na rede enviando os arquivos de dados e de log para qualquer máquina da rede. Assim ganhamos um leque de facilidades dentro dos processos do nosso ambiente corporativo.

Então é isso. Conseguimos restaurar um backup utilizando várias máquinas. Pode ter uma que é apenas o servidor de arquivos, outra o servidor de banco e outra como uma simples estação de trabalho.

Para maiores detalhes do comando RESTORE DATABASE vide o books online do SQL.

Até mais pessoal,

Abraço.

Marco.

Um comentário:

  1. Parabéns pelo blog e pela iniciativa!!!
    A idéia de postar problemas ocorridos no dia a dia vai ajudar muita gente!!!!!
    Grande Abraço!

    Maria Fernanda

    ResponderExcluir