A utilização de bancos de dados relacionais revolucionou, sem sombra de dúvidas, a maneira como as organizações modernas controlam suas informações. Graças a estruturas deste tipo, foi possível viabilizar a manipulação de um grande volume de informações de uma maneira extremamente eficiente e ágil.
Considerando todo este cenário, pode-se concluir que o advento deste tipo de tecnologia transformou radicalmente a forma de atuação em processos de negócio cotidianos, conferindo assim uma maior velocidade a tarefas que antes costumavam ser morosas. Além disso, o armazenamento de informações em bases relacionais abriu caminho para um melhor gerenciamento das organizações como um todo, fornecendo uma série de análises até outrora improváveis aos responsáveis pelas tomadas de decisões estratégicas.
A execução de comandos gerando e/ou consumindo dados armazenados num banco relacional acontece, basicamente, por intermédio de aplicações que centralizam o processamento das operações correspondentes: tais soluções são conhecidas popularmente como SGBDs (sigla de “Sistemas Gerenciadores de Banco de Dados”).
Exemplos notórios de softwares deste tipo são o Microsoft SQL Server, o Oracle, o IBM DB2, todos estes produtos frequentemente associados a projetos de grande porte. SGBDs gratuitos como o Firebird, o PostgreSQL e o MySQL também contam com uma boa aceitação por parte do mercado de tecnologia.
Quando se considera a construção de sistemas voltados às mais variadas finalidades de negócios, diversas são as características arquiteturais que contribuem para que os bancos relacionais sejam encarados a melhor alternativa:
- Um grau mínimo de padronização na manipulação de informações, sendo que isto é conseguido através do linguagem SQL (sigla do inglês “Structured Query Language”). Instruções como SELECT, INSERT, UPDATE e DELETE estão presentes em praticamente todos os tipos bancos de dados relacionais, fato este que contribui que desenvolvedores acostumados com um SGBD consigam migrar facilmente para a solução de outro fornecedor;
- Servidores de bancos de dados contam, geralmente, com dispositivos que comportam uma demanda crescente no volume de dados manipulados ou, até mesmo, são flexíveis o suficiente para suportar ajustes que expandam o potencial de processamento. A esta característica dá-se o nome de escalabilidade;
- A capacidade de execução de múltiplas operações simultaneamente, atendendo assim, num curto espaço de tempo, a várias requisições geradas dentro de aplicações que dependam de um mesmo banco de dados;
- As principais plataformas de desenvolvimento da atualidade também encontram totalmente adequadas aos SGBDs mais populares. O .NET Framework e Java são bons exemplos disto, existindo inclusive soluções dentro destas que facilitam o mapeamento de estruturas relacionais para construções equivalentes da Orientação a Objetos.
Além de tudo o que já foi mencionado, muitos SGBDs contam nativamente com dispositivos que impedem danos a bancos de dados quando da ocorrência de falhas. Tais mecanismos costumam ser acionados em situações como quedas no fornecimento de energia elétrica, problemas de hardware e/ou software que levem a um estado de inoperância em um servidor etc.
Apesar de toda esta preocupação, isto não significa que uma base relacional estará “blindada” contra problemas mais sérios: poderão existir casos em que um ou mais arquivos que compõem um banco de dados ficaram corrompidos por algum fator qualquer. Se isto realmente acontecer, um Administrador de Banco de Dados (DBA) ou outro profissional responsável deverá proceder com a restauração de tal base. Fica mais do que óbvio, então, que esta atividade partirá do pressuposto de que um backup já foi realizado anteriormente.
Também poderão existir outras razões que exijam o backup e, consequentemente, a realização de um procedimento de “restore” de uma base de dados. Dentre tais motivos, é possível citar:
- Migrações de bases de um servidor para outro;
- A criação de cópias de um banco de dados, a fim de que desenvolvedores possam trabalhar numa base separada, já que este tipo de acesso costuma ser proibido em sistemas que já se encontram em operação.
- Em software houses, o restore de um banco de dados representa um tipo de prática comum. A partir da restauração do backup de um cliente, programadores podem atuar sobre tal base de dados, efetuando testes e simulando situações necessárias ao desenvolvimento e/ou correção de problemas em um sistema.
A finalidade deste artigo é demonstrar, em termos gerais, como se efetuar o backup e a restauração de bases de dados no SQL Server 2012. A fim de se cumprir tal objetivo, será efetuado primeiramente um backup completo de um banco de dados pré-existente. Na sequência, tal backup será restaurado; importante destacar que este último procedimento simulará um problema na base de dados, de forma a justificar assim a execução do processo de recuperação das informações.
Especificamente no caso do SQL Server, atividades que envolvam a realização de backup e/ou restore de uma base costumam ser executadas a partir do Microsoft SQL Server Management Studio. Este também será o caso do exemplo apresentado a seguir, em que se fará uso desta ferramenta visual a fim de demonstrar tais procedimentos.
Backup de um banco de dados no SQL Server
Inicialmente, será necessário acessar o SQL Server Management Studio, conectando-se a partir disto ao servidor de banco de dados em que está a base a partir da qual se fará o backup. Os procedimentos descritos neste artigo serão feitos empregando uma base chamada “BancoExemplo” (Figura 1), sendo que nesta ultima existem três tabelas: TB_REGIAO, TB_SUBREGIAO e TB_REPRESENTANTE_COMERCIAL.
Figura 1: Tabelas da base BancoExemplo
Com a janela do Management Studio ativa, clicar com o botão direito do mouse sobre o banco de dados que se prestará à geração da cópia de segurança (neste caso, o mesmo se chama “BancoExemplo”). Selecionar a opção “Tasks” e, em seguida, “Back Up...” (Figura 2).
Figura 2: Acionando a opção que faz o backup de uma base de dados
Neste momento, será exibida uma tela similar àquela que consta na Figura 3. É a partir da janela “Back Up Database” que um usuário conseguirá proceder com o backup de uma base (desde que o mesmo conte com as devidas permissões de acesso).
Figura 3: Janela Back Up Database
Chega agora o ponto em que serão definidas as configurações para que o arquivo de backup seja gerado. Como o foco deste artigo é justamente descrever o processo de criação de um backup completo no SQL Server, não serão discutidas aqui as opções que permitem a criação de outros tipos de cópias de segurança.
Preencher os itens da seção Source com os seguintes valores:
- Database: configuração que se refere ao banco a partir do qual será gerado o arquivo de backup. Deverá estar marcada neste caso a base "BancoExemplo";
- Backup type: como será criado um backup completo, selecionar o valor "Full" para este item;
- Backup component: certificar-se de que está marcada a opção “Database”.
Já para os campos da seção "Backup set", informar os valores relacionados a seguir:
- Name: identificação do backup que se está montando. Este elemento foi preenchido no exemplo com o valor "Backup_2012-09-12";
- Description: descrição da cópia de segurança que será gerada. Informou-se neste item o valor "Backup BancoExemplo - 12/09/2012";
- Backup set will expire: deverá estar selecionada a opção "After", além de preenchido o valor "0". Isto indicará que o backup não possui uma data de expiração (prazo após o qual a cópia em questão não seria mais válida).
Por fim, será necessário definir o arquivo que corresponde à cópia de segurança da base de dados selecionada. Isto deverá ser feito na seção “Destination”:
- É necessário assegurar, primeiramente, que o valor "To Disk" tenha sido marcado para a opção "Back up To".
- Logo abaixo de "Back up To" aparecerá um caminho que indica o arquivo que será gerado ao se executar o processo de backup. Remover a informação que constar em tela, clicando para isto no botão “Remove”. Por default, o SQL Server costuma assumir que esta cópia ficará num diretório padrão do servidor SQL ou, até mesmo, poderá apontar para o último backup realizado com sucesso;
- Acionar agora o botão "Add", a fim de se especificar o nome e o local em que será gerado o arquivo correspondente à cópia de segurança. Ao se executar esta opção, será exibida a tela “Select Backup Destination”, conforme demonstrado na Figura 4.
Figura 4: Janela Select Backup Destination
Com o item “File name” marcado, clicar no botão com reticências (“...”), a fim de abrir com isto uma janela (Figura 5) em que será escolhido o diretório e o nome do arquivo de backup. Para efeitos de teste, foi informado que o arquivo que conterá a cópia dos dados terá por nome “BancoExemplo_2012-09-12.bak”, com o mesmo sendo gravado no diretório destino C:\Devmedia\.
Figura 5: Janela em que é definido o caminho e o nome do arquivo de backup
Uma vez especificados o caminho e o nome da cópia de segurança, será apresentada novamente a janela “Select Backup Destination” (Figura 6).
Figura 6: Janela Select Backup Destination com o caminho do backup já definido
Após se confirmar o caminho completo do arquivo de backup em “Select Backup Destination”, o usuário será direcionado novamente para a janela “Back Up Database” (Figura 7).
Figura 7: Janela Back Up Database com todas as configurações já preenchidas
Com todos os parâmetros para a geração da cópia de segurança devidamente preenchidos, deve-se clicar no botão “OK”, visando com isto concluir o processo de geração do backup. Tão logo esta tarefa tenha se encerrado, uma mensagem como a que consta na Figura 8 será apresentada em tela.
Figura 8: Backup gerado com sucesso
Conferindo então o caminho que havia sido indicado anteriormente, será possível constatar que o arquivo de backup foi gerado com sucesso (conforme demonstrado na Figura 9).
Figura 9: Descrição
Restore de um banco de dados no SQL Server
Em conformidade com o que já foi mencionado no início deste artigo, o exemplo descrito a seguir simulará um problema na base de dados “BancoExemplo”. Supondo que as tabelas da mesma foram removidas (Figura 10), faz-se necessário então proceder com a restauração do banco de dados, empregando para isto o backup gerado na seção anterior.
Figura 10: Base BancoExemplo sem nenhuma tabela
A primeira ação visando restaurar a base de dados consiste em se clicar com o botão direito do mouse sobre “BancoExemplo”, selecionando em seguida “Tasks”, “Restore” e, por fim, a opção “Database” (Figura 11).
Figura 11: Acionando a opção que faz o restore de uma base de dados
Será então exibida a janela “Restore Database” (Figura 12).
Figura 12: Janela Restore Database
Dentro da seção “Source” marcar a opção “Device”, clicando em seguida no botão com reticências (“...”), a fim de selecionar o arquivo de backup que será restaurado (Figura 13).
Figura 13: Janela Select backup devices
Em “Select backup devices” será preciso se certificar de que a opção “Backup media type” foi configurada com o valor “File”. Após isto, acionar o botão “Add”, a fim de incluir o arquivo de backup que será empregado na restauração da base de dados: a janela “Locate Backup File” aparecerá (Figura 14), devendo-se informar o caminho completo da cópia de segurança (“C:\Devmedia\BancoExemplo_2012-09-12.bak”).
Figura 14: Janela Locate Backup File
Selecionado o arquivo que servirá de base para que o processo de restore seja executado, será exibida novamente a janela “Select backup devices” (Figura 15), só que desta vez preenchida com o caminho completo do arquivo de extensão .bak.
Figura 15: Janela Select backup devices com o arquivo a ser restaurado já definido
Após se confirmar o arquivo que será restaurado, a janela “Restore Database” estará com os campos da seção “Destination” preenchidos: neste último caso, “Database” já aponta para a base “BancoExemplo” (Figura 16).
Figura 16: Janela Restore Database com o arquivo de backup já selecionado
Selecionar agora o item "Options", que está abaixo do elemento "Select a page" (na parte esquerda da tela "Restore Database"). Mais alguns ajustes serão necessários na tela que é apresenta na Figura 17.
Figura 17: Janela Restore Database com outras opções a serem configuradas para a restauração
Na seção "Restore options" marcar a opção "Overwrite the existing database (WITH REPLACE)". Com isto se está definindo que o banco de dados existente será substituído em sua totalidade por aquilo que constar na cópia de segurança.
Já na seção "Server connections" selecionar o item "Close existing connections to destination database". Esta opção irá forçar que prováveis usuários acessando a base "BancoExemplo" sejam desconectados automaticamente, sendo que isto é um pré-requisito para se iniciar a restauração do backup (do contrário, um erro aconteceria e este processo seria abortado).
Após esses últimos ajustes, a janela “Restore Database” ficará com uma aparência similar àquela da Figura 18. Clicando-se no botão “OK”, a restauração será então iniciada e, caso não ocorram problemas, uma mensagem como a que consta na Figura 19 será exibida para o usuário.
Figura 18: Janela Restore Database com outras opções de restauração já configuradas
Figura 19: Mensagem que indica que o processo de restore foi finalizado com sucesso
Verificando novamente a base de dados BancoExemplo, será possível constatar agora que as tabelas que existiam anteriormente na mesma (TB_REGIAO, TB_SUBREGIAO e TB_REPRESENTANTE_COMERCIAL) já foram devidamente recriadas (Figura 20).
Figura 20: Base BancoExemplo após o restore
Conclusão
Procurei com este artigo apresentar de maneira simplificada como é feito o backup e a restauração de bancos de dados no SQL Server. Tarefas deste tipo são geralmente executadas a partir do Management Studio, interface gráfica que é parte integrante do SQL Server e projetada para ser utilizada por profissionais dotados de um perfil mais técnico (como DBAs e Desenvolvedores de Sistemas). Espero que o conteúdo aqui apresentado possa auxiliá-lo no dia-a-dia. Até uma próxima oportunidade!