Realizando backup automático no SQL server express

O Microsoft SQL Server Express é um produto de gerenciamento de dados poderoso e confiável que fornece recursos robustos, proteção de dados e desempenho para clientes de aplicativos incorporados, aplicativos Web simples e armazenamentos de dados locais. Criado para ser de protótipo rápido e de fácil implantação, o SQL Server Express está disponível gratuitamente e você pode redistribuí-lo com outros aplicativos.


Com a versão do sql server express não temos como criar um backup automático pois a versão não dá suporte ao sql agent onde é responsável pelo processo.


Então para criar uma forma automatizada vamos usar :


NomeDoArquivo.sql : guarda comando de backup do sql server.
NomeDoArquivo.Bat : guarda usuário, senha( SQL server ) e caminho do arquivo .sql está salvo.


Agendador de tarefas do windows


Detalhando :
Os arquivos são criados em blocos de notas.
Dentro do NomeDoArquivo.Bat deverá conter o comando
osql -U usuário -P senha -i c:\pasta\NomeDoArquivo.sql.SQL
Dentro do NomeDoArquivo.sql deverá conter o comando
Backup Database NomeBanco to disk="C:\pasta\backup.Bak"


Agendador de tarefas do windows.

Caminho : Painel de Controle\Ferramentas Administrativas\Agendador de Tarefas.


Exemplo :

 


Escolha a opção que seja feita o backup automático.

 

 


Definir horário e data de início.

Escolher a opção "iniciar um programa".

Programar o script. Nesse caso será o arquivo .bat e concluir.

 

Com esses passos conseguimos definir um processo automatizado para criar backups agendados eliminando o uso manual do usuário. Lembrando que existe outras formas de
criar este processo como por exemplo usando stored procedure.


Para saber mais:
Aprofunde seus conhecimentos sobre este tema na comunidade sql server
Download do sql server express

Exibições: 5610

Comentar

Você precisa ser um membro de DevBrasil para adicionar comentários!

Entrar em DevBrasil

Comentário de Haroldo Moraes de Souza em 26 fevereiro 2012 às 13:32

Valew o exclarecimento Marcelo Santos

 

Comentário de Marcelo Santos do Nascimento em 25 fevereiro 2012 às 20:29

Olá Haroldo Moraes de Souza, no caso o Backup e completo do SQL

Para o uso ele coloca o nome do banco mais a data e hora:

    Exemplo:

          NomeBanco_DB_20120225_2127.BAK

          NomeBanco_DB_20120225_2128.BAK

Neste caso podera ter varios arquivos e caso precise recuperar algum somente volta o backup correspondente a sua necessidade.

Comentário de Silas Paixao em 24 fevereiro 2012 às 18:09

Olá Pessoal, eu tenho outra dica:

Cobian backup(sombra: não precisa para mssql), ver 8. 

Ele Consegue fazer toda essa rotina, sem usar uma linha de código, podendo escolher intervalo de backup e envio de e-mail, após a operação.

Comentário de Haroldo Moraes de Souza em 24 fevereiro 2012 às 9:43

Caro Marcelo santos gostaria de saber mais detalhes sobre esse arquivo sql que você usa teria como você passar instruções de o que acontece  em cada linha e que tipo de backup você está utilizando se é de log se é full obrigado ...

Comentário de Márcio Araújo em 24 fevereiro 2012 às 9:34

Showw.. O bom é trocar ideias e já teve várias Valeu galera.

Comentário de Marcelo Santos do Nascimento em 24 fevereiro 2012 às 8:15

Esta dica eu ja utilizo com uma melhoria onde o mesmo faz os arquivos por data e hora em um CASE.

Neste caso se precisar voltar um backup de algum dia e so escolher e poder se agendado para realizar este tipo de backup a cada semana para evitar que fique muitos arquivos de backup por dia e hora

Espero que ajude

================================================================

ARQUIVO BAT

osql -S. -UUsuarioSABanco -PSenhaBanco -ie:\NomeArquivoBackupSQL.sql

================================================================

ARQUIVO SQL

DECLARE @BANCO      VARCHAR(100)


DECLARE TABELAS CURSOR FOR
   SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' ORDER BY TABLE_NAME

OPEN TABELAS
    FETCH NEXT FROM TABELAS INTO @NOMETABELA
    WHILE @@FETCH_STATUS = 0
    BEGIN
       IF UPPER(LEFT(@NOMETABELA,7)) = 'TB_TEMP'
              EXECUTE ('TRUNCATE TABLE ' + @NOMETABELA)
       DBCC DBREINDEX(@NOMETABELA) WITH NO_INFOMSGS
    FETCH NEXT FROM TABELAS INTO @NOMETABELA
    END
CLOSE TABELAS
DEALLOCATE TABELAS

SET @BANCO=DB_NAME()
EXECUTE('BACKUP LOG ' + @BANCO + ' WITH TRUNCATE_ONLY')
EXECUTE('DBCC SHRINKDATABASE(' + @BANCO + ',1)')

SET @ARQUIVO = '''DriveParaBackup:\' + @BANCO + '_DB_' +
           SUBSTRING(CONVERT(CHAR(10),GETDATE(),103),7,4) +
           SUBSTRING(CONVERT(CHAR(10),GETDATE(),103),4,2) +
           SUBSTRING(CONVERT(CHAR(10),GETDATE(),103),1,2) +
               '_' +
           SUBSTRING(CONVERT(CHAR(12),GETDATE(),114),1,2) +
           SUBSTRING(CONVERT(CHAR(12),GETDATE(),114),4,2) +
           SUBSTRING(CONVERT(CHAR(12),GETDATE(),114),7,2) + '.BAK'''

EXECUTE ('BACKUP DATABASE ' + @BANCO + ' TO DISK = ' + @ARQUIVO)

Comentário de Sidnei Aparecido dos Reis em 23 fevereiro 2012 às 21:25
Muito bom.
Comentário de Joaquim Amado da Silva Júnior em 23 fevereiro 2012 às 20:27

Márcio.ótimo!!  Boa explicação.

Comentário de Haroldo Moraes de Souza em 23 fevereiro 2012 às 16:59

valeu... mande mais dicas abs..

Comentário de Felipe Mateus da Rocha em 23 fevereiro 2012 às 16:59

gostei da dica falow

© 2017   Criado por Ramon Durães.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço