terça-feira, 3 de janeiro de 2012

Automatizando Backups no SQL Server Express


1) O primeiro passo é acessar seu servidor SQL Express e criar um diretório para o armazenamento dos arquivos de backup e seus respectivos logs. Como exemplo, crie o diretório Backups no disco C: (C:/Backups).
2) O segundo passo é copiar a procedure com o nome expressmaint.sql no servidor.
3) Salve o script na pasta C:/Backups.
4) Agora é preciso criar esta procedure no banco de dados Master do SQL Express. Para isto, abra o SQL Server Management Studio Express e com ele execute a proecedure:
5) Abra a ferramenta SQL Server Surface Area Configuration (Iniciar|Programas|Microsoft SQL Server 2005|Configuration Tools)
6) Selecione o link Surface Area Configuration for Features
7) Selecione a opção OLE Automation e clique sobre Enable OLE Automation. A ativação deste feature é necessária para o correto funcionamento da procedure. É possível que a execução da procedure já o tenha abilitado, mas vale ir dar uma olhada.
8) Clique em OK e feche a ferramenta
9) Criada a procedure e ativada a feature de OLE Automation, é preciso então criar um segundo arquivo que quando executado pelo utilitário sqlcmd.exe, irá realizar a chamada da procedure. Para isso, copie o script abaixo e salve-o como um arquivo dentro do diretório C:/Backups com o nome databasemaint.sql ou copie o arquivo de mesmo nome no servidor.
EXEC expressmaint
@database = '$(DB)',
@optype = '$(TYPE)',
@backupfldr = '$(BACKUPFOLDER)',
@reportfldr = '$(REPORTFOLDER)',
@dbretainunit = 'days',
@dbretainval = 1,
@report = 1
10) Criado o arquivo databasemaint.sql, pode-se então usar o utilitário sqlcmd.exe para chamar este arquivo e disparar a procedure expressmaint, executando então o backup desejado. Veja um exemplo na figura abaixo:



Observer que no exemplo o utilitário sqlcmd é chamado passando os seguintes parâmetros:
-S ==> O nome do servidor SQL Express
-E ==> Informa ao utilitário para se conectar no SQL Express usando a conta de usuário logada no Windows.
-i ==> Informa a localização do arquivo databasemaint.sql
-v ==> São os parâmetros utilizados dentro do arquivo databasemaint.sql. Neste caso, o sqlcmd substituirá a variável $(DB) (que está dentro do arquivo), pelo nome do banco passado no parâmetro DB. Aqui você pode passar o nome de um banco específico, ALL_USER para fazer backup de TODOS os bancos de usuário ou ainda ALL_SYSTEM para fazer backup apenas dos bancos de sistema (como visto no segundo exemplo da figura - janela DOS).
Para o parâmetro TYPE, você pode passar:
DB - Para backup Full
DIFF - Para backup differencial
LOG - Para backup de Log
CHECKDB - Para checar a integridade da base ou bases
REINDEX - Para executar um REINDEX nas bases
REORG - Para executar uma reorganização de todos os índices
Os parâmetros BACKUPFOLDER e REPORTFOLDER informam o caminho para armazenar os backups e seus respectivos logs.
11) Uma vez que os backups estão sendo executados com sucesso, você pode automatizar o processo para que este seja executado de forma automática. Como o SQL Express não possui o serviço SQL Serve Agent - que lhe permitiria criar jobs para a execução destas tarefas, a alternativa é criar os jobs através do Scheduled Tasks do Windows. Para isso, efetue um duplo-click na opção Scheduled Tasks no painel de controle do Windows.
12) Execute um duplo-click sobre a opção Add Scheduled Tasks para iniciar o Winzard.
13) Clique sobre o botão Browse e localize o utilitário sqlcmd.exe (por default está em C:|Program Files|Microsoft SQL Server|90|Tools|Binn).
14) Entre com um nome para o job (exemplo BackupSQLExpress), escolha a periodicidade de execução do job (por exemplo Daily) e clique em Next.
15) Entre com um horário para execução do job e clique em Next
16) Entre com o usuário e senha que será usado para executar o job. Use um usuário que seja administrador no Windows e no SQL Express.
17) Clique em Next e selecione a opção para abrir as propriedades avançadas do job. Clique em Finish.
18) Na caixa Run, apague o conteúdo existente e entre com:
sqlcmd -S ./SQLEXPRESS -E -i"C:/Backups/databasemaint.sql" -v DB="DBTESTE" -v TYPE="DB" -v BACKUPFOLDER="C:/backups" -v REPORTFOLDER="C:/backups"
Nota: Novamente não esqueça de substituir as barras (/) da linha acima pela barra de separação de diretório. Observe a figura abaixo.




19) Clique em OK e confirme a senha para o usuário novamente.
Pronto, agora o job está criado e será executado automaticamente pelo Windows nos horários e dias agendados. Para testar o job clique sobre o mesmo com o botão direito e selecione a opção Run. Verifique se os arquivos de backups e logs foram criados no diretório C:/Backups. Caso ocorra algum problema, certifique-se de ter alterar a barra (/) na linha de comando e de ter digitado a senha correta para o usuário.


Nenhum comentário:

Postar um comentário

Grato por comentar