23 de set. de 2009

Automatizar Backup no SQL Server

Para executarmos o backup de um banco de dados no SQL Server, podemos criar uma query assim:

BACKUP DATABASE @NomeBanco TO  DISK = @DiretorioENomeArquivo WITH NOFORMAT, NOINIT,  NAME = @NomeBackup, SKIP, NOREWIND, NOUNLOAD,  STATS = 10;

Antes então, temos que informar algumas variáveis para o SQL Server, com os nomes e diretórios, sendo assim, ficariamos com uma query assim:

DECLARE @NomeBanco AS varchar(255);

SET @NomeBanco = ‘BaseDadosCliente’;

DECLARE @DiretorioENomeArquivo AS varchar(255);

SET @DiretorioENomeArquivo = 'C:\Backup\BancoDadosCliente ' + replace(getdate(), ':', '-') + '.bak';

DECLARE @NomeBackup AS varchar(255);

SET @NomeBackup= ‘BaseDadosCliente Full Backup’;

BACKUP DATABASE @NomeBanco TO  DISK = @DiretorioENomeArquivo WITH NOFORMAT, NOINIT,  NAME = @NomeBackup, SKIP, NOREWIND, NOUNLOAD,  STATS = 10;

Podemos executar uma query no prompt de comando chamando o executavel do SQL Server, passando o parametro “Q” com a query.Vamos alinhar um comando para tal:

sqlcmd.exe -Q "DECLARE @NomeBanco AS varchar(255); SET @NomeBanco = ‘BaseDadosCliente’; DECLARE @DiretorioENomeArquivo AS varchar(255); SET @DiretorioENomeArquivo = 'C:\Backup\BancoDadosCliente ' + replace(getdate(), ':', '-') + '.bak'; DECLARE @NomeBackup AS varchar(255); SET @NomeBackup= ‘BaseDadosCliente Full Backup’; BACKUP DATABASE @NomeBanco TO  DISK = @DiretorioENomeArquivo WITH NOFORMAT, NOINIT,  NAME = @NomeBackup, SKIP, NOREWIND, NOUNLOAD,  STATS = 10;”

image

Já que temos uma linha de comando para efetuarmos backup, que tal agendar-mos no windows para executar esta linha toda noite?

Localize o agendador de tarefas

image

Clique em Create Basic Task

image

image

image image
image

Após informar nossa linha de comando, o Wizard perguntará se vc deseja executar co sqlcmd.exe com os argumentos, clique em Yes.

image

image

Pronto, temos um backup automatizado e agendado!

:)

0 comentários: