How to – Schedule backup routines on SQL Server Express


Autor Oberdan Schaider

Olá pessoal!

Neste post vamos falar um pouco sobre como criar agendamento de rotinas de backup em um SQL Server 2016 Express + Task Scheduler do Windows + arquivos .bat.

Para criar esse tipo de agendamento, geralmente utilizamos o próprio Agent do SQL Server. Porém, como estamos falando de um Express, este é muito restrito. Devido a essa restrição, não há algumas features disponíveis¸tais como SQL Server Agent, backup compression, etc. Para verificar todas restrições e comparações com outras edições do SQL Server, segue link de referência: https://docs.microsoft.com/en-us/sql/sql-server/editions-and-components-of-sql-server-2016?view=sql-server-ver15.

Por isso, para esse tipo de trabalho no SQL Server Express, podemos utilizar o Task Scheduler (Agendador de tarefas)do Windows.

Assim, vamos começar criando uma tarefa no Task Scheduler. Abra-o como administrador.

Com o botão direito, selecione a opção Create Task:

Escolha um nome para a task e marque a opção “Run whether use ris logged on or not” para salvar a autenticação.

Na aba Triggers, faça o agendamento conforme for necessário para o seu ambiente. Por ser agendamento de um backup full, pode ser agendado semanalmente (caso tenha programado agendamento de backups diferenciais diários e transacionais a cada 1h, por exemplo) ou até mesmo diário.

Na aba Actions, selecione qual ação o agendamento irá tomar. No nosso caso, executará um arquivo .bat com as instruções de backup.

Nesse diretório, vamos criar um arquivo .bat com o seguinte comando:

cd \
sqlcmd -S".\SQLEXPRESS2016" -E -dBackupDemo -Q"execute [dbo].[stp_Demo_BackupFull] 'BackupDemo', 'C:\BackupTest\'"

Sobre os parâmetros de conexão, consultar o seguinte link: https://docs.microsoft.com/en-us/sql/tools/sqlcmd-utility?view=sql-server-ver15.

Por questões de preferência e organização, preferimos criar uma procedure que faz o processo de backup e por último faz a validação do backup:

USE [BackupDemo]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
 
Create procedure [dbo].[stp_Demo_BackupFull](
    @pNmBanco sysname,
    @pDsCaminho varchar(200)
)
 
as
begin
 
Declare @NmBD varchar(200);
Declare @NmBackup varchar(200);
 
set @NmBD = @pDsCaminho + 'FULL_' + + @pNmBanco + '_' + convert(char(8), getdate(),112) + '_' + REPLACE(CONVERT(nvarchar, GETDATE(), 8), ':', '') + '.bak';
set @NmBackup = 'Backup Full do ' + @pNmBanco
 

BACKUP DATABASE @pNmBanco TO disk =  @NmBD WITH NOFORMAT, NOINIT,  
NAME = @NmBackup, SKIP, NOREWIND, NOUNLOAD, STATS = 10, CHECKSUM
 
--------------------------------
-- Verificação do backup executado 
Declare @DsMsg varchar(200);
set @DsMsg = 'A verificação falhou, o backup do banco de dados ' + @pNmBanco + ' não existe';
 
RESTORE VERIFYONLY FROM DISK = @NmBD WITH  FILE = 1,  NOUNLOAD,  NOREWIND
 
end

Na aba Conditions, você poderá escolher as configurações caso necessário, respeitando algumas condições. No nosso caso, deixamos padrão.

Na aba Settings, há mais algumas configurações que podem ser definidas, como desabilitar a tarefa caso fique em execução há mais de x dias, entre outras. Nesse caso, deixamos padrão devido a fins de teste.

Na aba History, você pode acompanhar o histórico de execuções e depurar caso ocorra algum erro durante alguma execução.

Quando for executar a tarefa, ele irá criar um arquivo no padrão abaixo:

“TIPODEBACKUP_BANCODEDADOS_ANOMESDIA_HORAMINUTOSEGUNDO.bak”

Pronto! Agora temos nosso agendamento de backup full do banco de dados. Para o agendamento de backups diferenciais e transacionais, basta trocar o tipo de backup no script e o agendamento segue a mesma lógica para criação.

Abraço e até a próxima!

Categorias

Artigos Recentes

Um Pouco sobre a LGPD – Lei Geral de Proteção aos Dados

Fale Conosco

Converse com nossos especialistas e descubra como transformar seus dados em informações seguras, disponíveis e acessíveis.

Endereço

Rua Angelo Antonello, 93 – Sala 62, Centro – Farroupilha/RS – CEP: 95170-492

Contato Comercial

Email: contato@cdbdatasolutions.com.br
Telefone: (54) 3401-1471

Abrir bate-papo
Olá
Podemos ajudar?