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.
Este blog tem o objetivo de compartilhar idéias sobre banco de dados com toda a comunidade de desenvolvedores e analistas de sistemas.
Mostrando postagens com marcador backup. Mostrar todas as postagens
Mostrando postagens com marcador backup. Mostrar todas as postagens
quarta-feira, 8 de setembro de 2010
domingo, 15 de agosto de 2010
Comandos RESTORE
Nesta seção vamos falar sobre o argumento RESTORE do SQL Server.
Dias atrás me deparei com uma questão na minha empresa. Estavamos com um backup de uma base de dados de mais de 100 GB.
Ao tentar restaurá-la ocorreram alguns erros incomuns.
Daí surgiram algumas dúvidas:
- O backup está corrompido?
- Qual a versão do SQL dessa base de dados. É compativel com a do meu servidor?
- Qual o tamanho exato dos arquivos de dados e de log?
Enfim, estes foram meus questionamentos para uma analise primária. Mas como respondê-los?
No SQL Server temos alguns argumentos que podem nos auxiliar em problemas como esse.
Seguem os tópicos:
RESTORE FILELISTONLY: Este argumento possibilita ver os dados do(s) arquivo(s) de log e de dados do backup. Informações como: Tamanho do arquivo, local onde estão os arquivos de dados e de log na máquina em que a base se encontra, dentre outros dados.
No editor de querys execute o comando:
RESTORE FILELISTONLY FROM DISK = 'C:\SQLSERVER\BLOG.BAK'
Será mostrada uma imagem parecida com a que segue abaixo:

RESTORE HEADERLONLY: Com este argumento é possível verificar dados sobre os backup sets armazenados. Com esta instrução pdemos verificar o nome do servidor, a data da criação da base, é possível averiguar a versão em que essa base foi "backupeada". Particularmente, é um dos comandos que mais uso no dia a dia.
No editor de querys execute o comando:
RESTORE HEADERLONLY FROM DISK = 'C:\SQLSERVER\BLOG.BAK'
Será mostrada uma imagem parecida com a que segue abaixo:

RESTORE LABELONLY: Este argumento nos fornece informações sobre as midias do backup especificado.
No editor de querys execute o comando:
RESTORE LABELONLY FROM DISK = 'C:\SQLSERVER\BLOG.BAK'
Será mostrada uma imagem parecida com a que segue abaixo:

RESTORE REWINDONLY: Este argumento somente será usado para verificação de backup de fitas.
RESTORE VERIFYONLY: Este argumento verifica a integridade do arquivo de backup. Ele checa se o arquivo poderá ser lido durante uma possivel restauração.
No editor de querys execute o comando:
RESTORE VERIFYONLY FROM DISK = 'C:\SQLSERVER\BLOG.BAK'
Ao rodar este comando é verificado a consistência do backup e caso esteja integro será mostrada a mensagem: The backup set on file 1 is valid.
Uma observação sobre este comando: Em bases muito grande, pode demorar bastante até o retorno da mensagem aparecer.
Até o próximo tópico.
Abraço.
Marco.
Dias atrás me deparei com uma questão na minha empresa. Estavamos com um backup de uma base de dados de mais de 100 GB.
Ao tentar restaurá-la ocorreram alguns erros incomuns.
Daí surgiram algumas dúvidas:
- O backup está corrompido?
- Qual a versão do SQL dessa base de dados. É compativel com a do meu servidor?
- Qual o tamanho exato dos arquivos de dados e de log?
Enfim, estes foram meus questionamentos para uma analise primária. Mas como respondê-los?
No SQL Server temos alguns argumentos que podem nos auxiliar em problemas como esse.
Seguem os tópicos:
RESTORE FILELISTONLY: Este argumento possibilita ver os dados do(s) arquivo(s) de log e de dados do backup. Informações como: Tamanho do arquivo, local onde estão os arquivos de dados e de log na máquina em que a base se encontra, dentre outros dados.
No editor de querys execute o comando:
RESTORE FILELISTONLY FROM DISK = 'C:\SQLSERVER\BLOG.BAK'
Será mostrada uma imagem parecida com a que segue abaixo:

RESTORE HEADERLONLY: Com este argumento é possível verificar dados sobre os backup sets armazenados. Com esta instrução pdemos verificar o nome do servidor, a data da criação da base, é possível averiguar a versão em que essa base foi "backupeada". Particularmente, é um dos comandos que mais uso no dia a dia.
No editor de querys execute o comando:
RESTORE HEADERLONLY FROM DISK = 'C:\SQLSERVER\BLOG.BAK'
Será mostrada uma imagem parecida com a que segue abaixo:

RESTORE LABELONLY: Este argumento nos fornece informações sobre as midias do backup especificado.
No editor de querys execute o comando:
RESTORE LABELONLY FROM DISK = 'C:\SQLSERVER\BLOG.BAK'
Será mostrada uma imagem parecida com a que segue abaixo:

RESTORE REWINDONLY: Este argumento somente será usado para verificação de backup de fitas.
RESTORE VERIFYONLY: Este argumento verifica a integridade do arquivo de backup. Ele checa se o arquivo poderá ser lido durante uma possivel restauração.
No editor de querys execute o comando:
RESTORE VERIFYONLY FROM DISK = 'C:\SQLSERVER\BLOG.BAK'
Ao rodar este comando é verificado a consistência do backup e caso esteja integro será mostrada a mensagem: The backup set on file 1 is valid.
Uma observação sobre este comando: Em bases muito grande, pode demorar bastante até o retorno da mensagem aparecer.
Até o próximo tópico.
Abraço.
Marco.
Assinar:
Comentários (Atom)