Como fazer backup de bancos de dados SQL em um compartilhamento de rede
Fazer backup de bancos de dados SQL regularmente é obrigatório. Já abordamos maneiras de fazer backup facilmente de todos os seus bancos de dados do servidor SQL em um disco rígido local, mas isso não protege contra falhas de unidade e / ou sistema. Como uma camada extra de proteção contra esse tipo de desastre, você pode copiar ou criar diretamente seus backups em um compartilhamento de rede..
Backup localmente e depois copiar para o compartilhamento de rede
A maneira preferida e mais direta de realizar essa tarefa é simplesmente criar um backup local de um banco de dados e, em seguida, copiar o respectivo arquivo de backup para um compartilhamento de rede. Você pode fazer isso criando um script em lote que se parece com isso:
SET LocalFolder = C: Arquivos de ProgramasMicrosoft SQL ServerMSSQL.1MSSQLBackup
SqlCmd -E -Q “Banco de dados de backup MyDB To Disk ="% LocalFolder% MyDB.bak "”
XCopy “% LocalFolder% MyDB.bak” “\ 192.168.16.55BackupDatabases” / Z / V
DEL “% LocalFolder% MyDB.bak”
Este script faz o seguinte (linha por linha):
- Define uma variável no diretório de backup do SQL local.
- Cria um backup do SQL do MyDB (usando a Autenticação do Windows) no diretório de backup do SQL local.
- Copia o arquivo de backup local para um compartilhamento de rede.
- Exclui o arquivo de backup local.
Novamente, esse é o método preferido porque funciona imediatamente e a probabilidade de uma falha de backup é mínima, já que o backup é criado em um disco local. No entanto, se você não tiver espaço em disco suficiente para armazenar cópias locais de arquivos de backup, essa ação falhará. Nesse caso, você precisará adicionar espaço em disco adicional ou backup diretamente a um compartilhamento de rede.
Backup diretamente para um compartilhamento de rede
Normalmente, quando você tenta criar um backup diretamente para um compartilhamento de rede usando um comando como:
SqlCmd -E -Q “Banco de Dados de Backup MyDB To Disk =" \ 192.168.16.55BackupDatabasesMyDB.bak "”
Você provavelmente terá um erro ao longo das linhas de:
Msg 3201, nível 16, estado 1, servidor JF, linha 1
Não é possível abrir o dispositivo de backup '\ 192.168.16.55BackupDatabasesMyDB.bak'. Erro do sistema operacional 5 (acesso negado)..
Msg 3013, nível 16, estado 1, servidor JF, linha 1
O BACKUP DATABASE está terminando anormalmente.
Esse erro ocorre apesar do fato de você ter executado o comando de backup do SQL usando a Autenticação do Windows (a opção -E) e a conta do Windows como a capacidade de acessar e copiar arquivos para o compartilhamento por meio do Windows Explorer..
O motivo pelo qual essa ação falha é porque o comando SQL é executado dentro dos limites da conta em que o serviço do SQL Server está sendo executado. Quando visualiza a lista de serviços no seu computador, muito provavelmente verá o serviço do SQL Server em execução como (a coluna de início de sessão como) ou sistema local ou serviço de rede que são contas de sistema que não têm acesso à rede.
Em nosso sistema, o backup para um comando de compartilhamento de rede falha porque temos o serviço do SQL Server em execução como Sistema Local que, novamente, não pode acessar nenhum recurso da rede..
Para permitir que o SQL faça o backup diretamente em um compartilhamento de rede, temos que executar o serviço do SQL Server como uma conta local que tenha acesso aos recursos da rede..
Edite as propriedades do serviço do SQL Server e na guia Logon, configure o serviço para ser executado como uma conta alternativa que tenha direitos de acesso à rede.
Quando você clica em OK, você receberá um aviso de que as configurações não terão efeito até que o serviço seja reiniciado.
Reinicie o serviço.
A lista de serviços agora deve mostrar que o serviço do SQL Server está sendo executado como a conta que você configurou.
Agora, quando você executa o comando para fazer backup diretamente em um compartilhamento de rede:
SqlCmd -E -Q “Banco de Dados de Backup MyDB To Disk =" \ 192.168.16.55BackupDatabasesMyDB.bak "”
Você deve ver uma mensagem de sucesso:
Processou 152 páginas para o banco de dados 'MyDB', arquivo 'MyDB' no arquivo 1.
Processado 2 páginas para o banco de dados 'MyDB', arquivo 'MyDB_log' no arquivo 1.
BACKUP DATABASE processou com sucesso 154 páginas em 0,503 segundos (2.493 MB / s).
Com o arquivo de backup agora no diretório de compartilhamento de rede:
Considerações sobre compartilhamento de rede
É importante observar que o comando de backup espera poder conectar-se diretamente ao compartilhamento de rede sem precisar de credenciais. A conta que você configurou o serviço do SQL Server para executar como deve ter uma conexão confiável com o compartilhamento de rede onde as respectivas credenciais permitem acesso, caso contrário, um erro como isso pode ocorrer:
Msg 3201, nível 16, estado 1, servidor JF, linha 1
Não é possível abrir o dispositivo de backup '\ 192.168.16.55BackupDatabasesMyDB.bak'. Erro do sistema operacional 1326 (Falha de logon: nome de usuário desconhecido ou senha incorreta.).
Msg 3013, nível 16, estado 1, servidor JF, linha 1
O BACKUP DATABASE está terminando anormalmente.
Esse erro indica que o nome de usuário e a senha da conta não foram aceitos pelo compartilhamento de rede e o comando falhou.
Outro problema a ser lembrado é que o backup é realizado diretamente em um recurso de rede, portanto, qualquer falha na conexão de rede pode causar falha no backup. Por esse motivo, você deve fazer backup somente em locais de rede que sejam estáveis (ou seja, provavelmente não uma VPN).
Implicações de segurança
Conforme mencionado anteriormente, é preferível usar o método no qual você faz backup local e copie em um compartilhamento de rede, pois ele permite que você execute o Serviço SQL como uma conta apenas com acesso ao sistema local..
Ao executar o serviço como uma conta alternativa, você abre a porta para possíveis problemas de segurança. Por exemplo, um script SQL mal-intencionado poderia ser executado sob a conta alternativa e atacar recursos de rede. Além disso, quaisquer alterações na respectiva conta (alterações / expirações de senha ou exclusão / desativação da conta) farão com que o serviço do SQL Server falhe ao iniciar.
É importante manter esses pontos em mente se você executar sua instância do SQL Server usando uma conta alternativa. Embora esses não sejam os rostos de exibição se forem tomadas as devidas precauções, você deve considerar adicionar mais espaço no disco rígido e, em seguida, implementar o backup e a cópia locais para poder executar o serviço SQL usando uma conta local..