Agendar e automatizar backups de bancos de dados do SQL Server no SQL Server Express
Este artigo apresenta como usar um script Transact-SQL e o Agendador de Tarefas do Windows para automatizar backups de bancos de dados do SQL Server Express de forma agendada.
Versão original do produto: SQL Server
Número original do KB: 2019698
Resumo
As edições do SQL Server Express não oferecem uma maneira de agendar trabalhos ou planos de manutenção porque o componente SQL Server Agent não está incluído nessas edições. Portanto, você precisa adotar uma abordagem diferente para fazer backup de seus bancos de dados ao usar essas edições.
Atualmente, os usuários do SQL Server Express podem fazer backup de seus bancos de dados usando um dos seguintes métodos:
Use o SQL Server Management Studio ou o Azure Data Studio. Para obter mais informações sobre como usar essas ferramentas para fazer backup de um banco de dados, revise os seguintes links:
Tutorial: Fazer backup e restaurar bancos de dados usando o Azure Data Studio
Use um script Transact-SQL que use a família de comandos BACKUP DATABASE. Para obter mais informações, confira BACKUP (Transact-SQL).
Este artigo descreve como usar um script Transact-SQL junto com o Agendador de Tarefas para automatizar backups de bancos de dados do SQL Server Express de forma agendada.
Observação
Isso se aplica apenas às edições do SQL Server Express e não ao SQL Server Express LocalDB.
Mais informações
Você deve seguir estas quatro etapas para fazer backup de seus bancos de dados do SQL Server usando o Agendador de Tarefas do Windows:
Etapa A: Crie um procedimento armazenado para fazer backup de seus bancos de dados.
Conecte-se à instância do SQL Express e crie sp_BackupDatabases procedimento armazenado no banco de dados mestre usando o script no seguinte local:
Etapa B: Baixe a ferramenta SQLCMD (se aplicável).
O sqlcmd
utilitário permite que você insira instruções Transact-SQL, procedimentos do sistema e arquivos de script. No SQL Server 2014 e versões inferiores, o utilitário é fornecido como parte do produto. A partir do SQL Server 2016, sqlcmd
o utilitário é oferecido como um download separado. Para obter mais informações, examine o utilitário sqlcmd.
Etapa C: crie um arquivo em lote usando o editor de texto.
Em um editor de texto, crie um arquivo em lotes chamado Sqlbackup.bat e copie o texto de um dos exemplos a seguir para esse arquivo, dependendo do cenário:
Todos os cenários abaixo são usados
D:\SQLBackups
como um espaço reservado. O script precisa ser ajustado para a unidade correta e o local da pasta de backup em seu ambiente.Se você estiver usando a autenticação SQL, certifique-se de que o acesso à pasta seja restrito a usuários autorizados, pois as senhas são armazenadas em texto não criptografado.
Observação
A pasta do SQLCMD
executável geralmente está nas variáveis de caminho do servidor após a instalação do SQL Server ou depois que você o instala como ferramenta autônoma. Mas se a variável Path não listar essa pasta, você poderá adicionar seu local à variável Path ou especificar o caminho completo para o utilitário.
Exemplo 1: backups completos de todos os bancos de dados na instância nomeada local do SQLEXPRESS usando a Autenticação do Windows.
// Sqlbackup.bat
sqlcmd -S .\SQLEXPRESS -E -Q "EXEC sp_BackupDatabases @backupLocation='D:\SQLBackups\', @backupType='F'"
Exemplo 2: Backups diferenciais de todos os bancos de dados na instância nomeada local do SQLEXPRESS usando um SQLLogin e sua senha.
// Sqlbackup.bat
sqlcmd -U <YourSQLLogin> -P <StrongPassword> -S .\SQLEXPRESS -Q "EXEC sp_BackupDatabases @backupLocation ='D:\SQLBackups', @BackupType='D'"
Observação
O SQLLogin deve ter pelo menos a função Operador de Backup no SQL Server.
Exemplo 3: Backups de log de todos os bancos de dados na instância nomeada local do SQLEXPRESS usando a Autenticação do Windows
// Sqlbackup.bat
sqlcmd -S .\SQLEXPRESS -E -Q "EXEC sp_BackupDatabases @backupLocation='D:\SQLBackups\',@backupType='L'"
Exemplo 4: backups completos do banco de dados USERDB na instância nomeada local do SQLEXPRESS usando a Autenticação do Windows
// Sqlbackup.bat
sqlcmd -S .\SQLEXPRESS -E -Q "EXEC sp_BackupDatabases @backupLocation='D:\SQLBackups\', @databaseName='USERDB', @backupType='F'"
Da mesma forma, você pode fazer um backup diferencial de USERDB colando 'D' para o parâmetro @backupType e um backup de log de USERDB colando 'L' para o parâmetro @backupType .
Etapa D: Agende um trabalho usando o Agendador de Tarefas do Windows para executar o arquivo em lotes que você criou na etapa B. Para fazer isso, siga estas etapas:
No computador que está executando o SQL Server Express, clique em Iniciar e, na caixa de texto, digite a tarefa Agendador.
Em Melhor correspondência, clique em Agendador de Tarefas para iniciá-lo.
No Agendador de Tarefas, clique com o botão direito do mouse em Biblioteca de Agendamento de Tarefas e clique em Criar tarefa básica....
Insira o nome da nova tarefa (por exemplo: SQLBackup) e clique em Avançar.
Selecione Diariamente para o Gatilho de Tarefa e clique em Avançar.
Defina a recorrência como um dia e clique em Avançar.
Selecione Iniciar um programa como a ação e clique em Avançar.
Clique em Procurar, clique no arquivo em lotes que você criou na Etapa C e clique em Abrir.
Marque a caixa Abrir a caixa de diálogo Propriedades para esta tarefa quando eu clicar em Concluir.
Na guia Geral,
Revise as opções de segurança e verifique o seguinte para a conta de usuário que executa a tarefa (listada em Ao executar a tarefa, use a seguinte conta de usuário:)
A conta deve ter pelo menos permissões de Leitura e Execução para iniciar o utilitário sqlcmd. Além disso:
Se estiver usando a autenticação do Windows no arquivo em lotes, verifique se o proprietário da tarefa tem permissões para fazer backups do SQL.
Se estiver usando a autenticação SQL no arquivo em lotes, o usuário do SQL deverá ter as permissões necessárias para fazer backups do SQL.
Ajuste outras configurações de acordo com suas necessidades.
Dica
Como teste, execute o arquivo em lotes da Etapa C em um prompt de comando iniciado com a mesma conta de usuário que possui a tarefa.
Lembre-se do seguinte ao usar o procedimento documentado neste artigo:
O serviço Agendador de Tarefas deve estar em execução no momento em que o trabalho está agendado para ser executado. Recomendamos que você defina o tipo de inicialização para este serviço como Automático. Isso garante que o serviço seja executado mesmo em uma reinicialização.
Deve haver muito espaço na unidade na qual os backups estão sendo gravados. Recomendamos que você limpe os arquivos antigos na pasta Backup regularmente para garantir que não fique sem espaço em disco. O script não contém a lógica para limpar arquivos antigos.