E ai pessoal, tudo bem?
Hoje eu tenho um desafio para vocês.
Como eu faço para realizar um backup de um banco de dados, deixando uma cópia do backup no servidor atual e já fazer uma cópia no servidor de backup?
Quero que o backup e a cópia sejam realizados ao mesmo tempo, sem a necessidade de intervir na cópia do arquivo de backup para o servidor de backups.
Realmente existe uma EXTENDED STORED PROCEDURE chamada XP_CMDSHELL que poderia nos ajudar a resolver esse problema.
Essa procedure permite que executemos comandos do sistema operacional, como por exemplo a cópia física de um arquivo, utilizando o SQL Server.
Mas a procedure XP_CMDSHELL gera uma grande abertura para possíveis “ataques” ao sistema operacional através do SQL Server, portanto ela está excluída da nossa solução.
A resposta para esse desafio é mais fácil do que você imagina, basta utilizarmos a cláusula MIRROR TO.
Vamos construir o seguinte cenário:
Atualmente o backup do meu banco de dados Ecommerce é realizado todas as noites e o arquivo gerado é gravado no disco D:Backup através do comando abaixo.
BACKUP DATABASE Ecommerce
TO DISK = ‘D:\BackupEcommerce.bak’
Por questões de segurança também será necessária a cópia do arquivo de backup para o caminho físico E:\Backup_Copia.
Para resolvermos esse problema, utilizamos a cláusula MIRROR TO, como exemplificado abaixo.
BACKUP DATABASE
Ecommerce TO DISK
= ‘D:\BackupEcommerce.bak’
MIRROR TO DISK
= ‘E:\Backup_CopiaEcommerce.bak’
WITH FORMAT
Com a utilização da cláusula MIRROR TO, o SQL Server passa a realizar o backup do banco de dados Ecommerce e gerar, ao mesmo tempo, dois arquivos de backup, sendo que um está sendo gravado no caminho físico D:Backup e outro sendo gravado no caminho físico E:\Backup_Copia.
Importante ressaltar que por ser um backup espelhado, caso qualquer um do arquivos de backup não possa ser finalizado, TODO o processo de backup é cancelado.
Essa funcionalidade só está disponível na edição ENTERPRISE e apenas a partir da versão SQL Server 2005.
Espero que tenham gostado e fiquem à vontade para enviar comentários, críticas e sugestões.
Abraço a todos.
Vitor Fava
Olá amigo Vitor,Se utilizarmos Jobs, como seria ?
Fala grande Aecio.Olha só, se você quiser adicionar um job, é bem tranquilo também, basta que você coloque o script de backup dentro de um step que seja de T-SQL.Se tiver mais alguma dúvida é só me procurar.Grande abraço.
Boa Vitor. Com a realização do mirror, o tempo de backup aumenta em quantos % ?
E ai Fabricio, tudo bem?Olha só, temos algumas variáveis interessantes para calcular essa % de aumento.Por exemplo, se o espelho do backup for enviado através da rede, temos de considerar a largura de banda e a concorrência pelo recurso.Mas vamos imaginar que temos um backup espelhado sendo gerado em dois discos fisicos diferentes e ambos com a mesma velocidade certo? Teoricamente o aumento seria de 0%, já que o SQL Server conseguiria escrever ao mesmo tempo em dois discos diferentes.Grande abraço.
Fala Vitor, Blz. vou tentar utilizar aqui. Qualquer coisa te comunico.Abraço