Backup SQL Server Express via linha de comando

Uma das desvantagens das versões Express do SQL Server é não ter o SQL Agent, que te permite agendar backups e outras tarefas administrativas nos seus bancos de dados.

No caso do backup, você pode facilmente automatizar usando o agendador de tarefas e um arquivo .bat com os comandos abaixo, que já inclui a compactação usando 7-Zip:

sqlcmd.exe -S (local)\SQLExpress -Q "BACKUP DATABASE MeuBanco TO DISK='d:\backup\meubanco.bak' WITH FORMAT"

"c:\program files\7-zip\7z.exe" a d:\backup\meubanco.7z d:\backup\meubanco.bak

É uma dica simples, mas que pode ser usada como ponto de partida para um script mais avançado e que atenda outras necessidades. Afinal, todo mundo precisa agendar backups de uma forma ou de outra.

E não esqueça de manter o backup bem longe do servidor. :)

Não deixe para amanhã

11 Comments

  • 29/7/2009 - 14:02 | Permalink

    Erick, gostei muito da dica. Inclusive publiquei no blog privativo da empresa em que trabalho.

  • 29/7/2009 - 14:21 | Permalink

    @Alex Dundes Bom saber Alex, já estava achando que não tinha ajudado ninguém com a dica. :)

  • vinício
    15/10/2009 - 00:35 | Permalink

    ajudou mto mesmo pra mim… eu fazia uma volta gigantesta para efetuar o backup via linha de comado!! mto obrigado!

  • 25/11/2009 - 16:15 | Permalink

    Erick, é necessario ja existir algum backup shedulado no sql,ou baseado no que esta sendo proposto ja funciona?

  • 25/11/2009 - 17:05 | Permalink

    @hilson silva só esse comando já faz o backup, não precisa ter mais nada.

  • Vinicius
    5/4/2011 - 19:13 | Permalink

    Erick muito bom, simples e útil seu post. Parabéns! Só uma pergunta… na verdade duas.
    1º Se colocar pra rodar o bkp semanalmente ele subscreve o anterior? (se sim é isso que quero mesmo)
    2º Precisa para o serviço do SQL pra fazer esse bkp ou é on line mesmo?
    3º Têm como fazer bkp de mais de uma base no mesmo script? Seria como? Assim?

    sqlcmd.exe -S (local)SQLExpress -Q “BACKUP DATABASE MeuBanco1 TO DISK=’d:backupmeubanco1.bak’ WITH FORMAT”
    -Q “BACKUP DATABASE MeuBanco2 TO DISK=’d:backupmeubanco2.bak’ WITH FORMAT”
    -Q “BACKUP DATABASE MeuBanco3 TO DISK=’d:backupmeubanco3.bak’ WITH FORMAT”

    Muito Obrigado!

    Vinicius

    • 5/4/2011 - 20:47 | Permalink

      1) Sim.
      2) Não precisa parar, pode ser inclusive com os usuários conectados.
      3) Tranquilo, uma das formas é repetir a linha inteira dentro de um arquivo .bat, trocando apenas o banco como você já fez.

  • Bruno Mendes
    16/9/2011 - 19:02 | Permalink

    Cara muito bom, aqui tava dando uns erros mas eu consegui corrigir.

    abraço

  • Roberto
    13/10/2011 - 13:16 | Permalink

    Cara, muito bom mesmo!

    Agora posso perguntar, ja perguntando? Para que serve o WITH FORMAT?

    É obrigatório ?

    Obrigado mais uma vez!!!!

    Roberto

  • Roberto
    13/10/2011 - 13:53 | Permalink

    Cara ta dando uns erros aqui !

    Um deles é informando que o SQL nao esta configurado para receber conexoes remotas …

    O que seria isso ?

  • Pingback: Backup do Sql Express - PunkSp! | PunkSp!

  • Leave a Reply

    Your email address will not be published. Required fields are marked *

    *

    You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>