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.
Como criar um backup agendado no SQL Express
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 1: Criar um procedimento armazenado para fazer backup de seus bancos de dados
Conecte-se à instância do SQL Express e crie sp_BackupDatabases
um procedimento armazenado no banco de dados mestre usando o script no seguinte local:
Etapa 2: Baixar o utilitário de cliente SQLCMD
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 3: criar um arquivo em lote usando um 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 4: Agendar um trabalho usando o Agendador de Tarefas do Windows para executar o arquivo em lotes que você criou na etapa 2
Siga estas etapas:
No computador que está executando o SQL Server Express, selecione Iniciar e digite Agendador de Tarefas na caixa de texto.
Em Melhor correspondência, selecione Agendador de Tarefas para iniciá-lo.
No Agendador de Tarefas, clique com o botão direito do mouse em Agendador de Tarefas (Local) e selecione Criar tarefa básica.
Insira o nome da nova tarefa (por exemplo, SQLBackup) e selecione Avançar.
Selecione Diariamente para o Gatilho de Tarefa e selecione Avançar.
Defina a recorrência como um dia e selecione Avançar.
Selecione Iniciar um programa como a ação e selecione Avançar.
Selecione Procurar, selecione o arquivo em lotes que você criou na Etapa 3 e, em seguida, selecione Abrir.
Marque a caixa de seleção Abrir a caixa de diálogo Propriedades desta 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
sqlcmd
utilitário. Além disso:Se estiver usando a Autenticação do Windows no arquivo em lotes, verifique se o proprietário da tarefa tem permissão para fazer backups do SQL.
Se estiver usando a autenticação SQL no arquivo em lote, 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 3 em um prompt de comando iniciado com a mesma conta de usuário que possui a tarefa.
Requisitos
Esteja ciente dos seguintes requisitos 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.
Você deve criar espaço suficiente na unidade onde os backups são 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.