Script em lote para backup de todos os bancos de dados do SQL Server

Índice:

Script em lote para backup de todos os bancos de dados do SQL Server
Script em lote para backup de todos os bancos de dados do SQL Server

Vídeo: Script em lote para backup de todos os bancos de dados do SQL Server

Vídeo: Script em lote para backup de todos os bancos de dados do SQL Server
Vídeo: Windows Essentials 2012 - YouTube 2024, Maio
Anonim

Já cobrimos como fazer backup de um banco de dados do SQL Server a partir da linha de comando, e se você quiser fazer backup de todos os seus bancos de dados de uma só vez? Você poderia criar um script em lote que executasse o comando de backup para cada banco de dados, mas esse script teria que ser atualizado sempre que um banco de dados fosse adicionado ou removido. Além disso, os backups de banco de dados serão todos anexados a um arquivo, que crescerá de acordo com o tamanho do novo backup sempre que for executado. Em vez disso, no verdadeiro modo "configure e esqueça", criaremos um script em lote que se adaptará ao seu SQL Server à medida que novos bancos de dados forem adicionados e removidos.

Para ir direto ao ponto, este é o script de backup:

@ECHO OFF SETLOCAL

REM Get date in format YYYY-MM-DD (assumes the locale is the United States) FOR /F “tokens=1,2,3,4 delims=/” %%A IN (‘Date /T’) DO SET NowDate=%%D-%%B-%%C

REM Build a list of databases to backup SET DBList=%SystemDrive%SQLDBList.txt SqlCmd -E -S MyServer -h-1 -W -Q “SET NoCount ON; SELECT Name FROM master.dbo.sysDatabases WHERE [Name] NOT IN (‘master’,’model’,’msdb’,’tempdb’)” > “%DBList%”

REM Backup each database, prepending the date to the filename FOR /F “tokens=*” %%I IN (%DBList%) DO ( ECHO Backing up database: %%I SqlCmd -E -S MyServer -Q “BACKUP DATABASE [%%I] TO Disk=’D:Backup%NowDate%_%%I.bak'” ECHO. )

REM Clean up the temp file IF EXIST “%DBList%” DEL /F /Q “%DBList%”

ENDLOCAL

Supondo que a data seja 1/13/2009 e você tenha 3 bancos de dados chamados "MyDB", "AnotherDB" e "DB Name with Spaces", o script produzirá 3 arquivos no local de backup especificado:

  • 2009-01-13_AnotherDB.bak
  • 2009-01-13_DB Name com Spaces.bak
  • 2009-01-13_MyDB.bak

Customizando e executando o script em lote

Claro, você vai querer personalizar o script para o seu ambiente, então aqui está o que você precisa fazer:

  • Se a localidade da sua máquina não estiver definida como EUA, o comando "Data / T" pode não retornar a data no formato "Ter 13/01/2009". Se esse for o caso, a variável NowDate não produzirá o formato desejado e deverá ser ajustada. (1 lugar)
  • Altere "MyServer" para ser o nome do seu SQL Server (inclua o nome da instância, se aplicável). (2 lugares)
  • Os bancos de dados denominados "mestre", "modelo", "msdb" e "tempdb" são bancos de dados fornecidos com o SQL Server. Você pode adicionar nomes de bancos de dados adicionais a essa lista se não quiser que eles sejam armazenados em backup. (1 lugar)
  • Altere o local do backup de "D: Backup" para o local em que você deseja armazenar os arquivos de backup do banco de dados.

Depois de ter personalizado o script em lote, agende-o para ser executado através do Agendador de Tarefas do Windows como um usuário com direitos de Administrador e está tudo pronto.

Recomendado: