none
Script backup automático SQLEXPRESS RRS feed

  • Question

  • Prezados(as), 

    Boa tarde 

    Estou com um servidor SQLEXPRESS e criei um .bat para realizar o backup automatico, porem o mesmo abre e fecha e nao realiza o backup alguem pode me ajudar ?

    Segue o codigo que esta dentro do .BAT 

    sqlcmd.exe -S SRV-RHU\SQLExpress -Q "BACKUP DATABASE FORPONTO TO DISK='R:\backup\meubanco.bak'"

    Obrigado

    jeudi 23 juillet 2020 18:42

Réponses

  • Olá amigos,

    Somente para ajudar: 

    Na .bat criada tem uma linha bastante interessante que é bom ficar atento: 

    forfiles -p "Informe o diretorio onde será armazenado o backup" -s -m *.bak* /D -4 /C "cmd /c del @path"
    

    Nesta linha, o parametro 'D -4'  informa que serão deletados os arquivos com a extensão .bak (ou seja os backups) com mais de 4 dias. 

    Neste caso , valide se sua retenção de acordo com o valor e altere se necessário.

    provalmente vocÊ irá deixar o script .bat em um agendamento talvez diário e neste caso é bom ficar atento.


    Se esta resposta lhe ajudou, marque-a como útil para que outra pessoa com dúvida ou problema semelhante possa encontrar resposta ou ajuda mais facilmente. * Jefferson Clyton Pereira da Silva - [ MCSA | MCP | MCTS | MTA | Analista de Banco de Dados - Sql Server e Oracle ]

    mardi 28 juillet 2020 02:01
  • Boa tarde,

    Tente assim:

    echo off
    
    sqlcmd -S "NomeServidorSQL" -i "Informe o caminho do script sQL"
    forfiles -p "Informe o diretorio onde será armazenado o backup" -s -m *.bak* /D -4 /C "cmd /c del @path"
    
    @pause
    
    echo. Executando backup banco de dados Aguarde...
    
    echo.

    jeudi 23 juillet 2020 19:28
  • Segue um script SQL para gerar o backup, basta vc editar as linhas comentadas. Salve o script e na .BAT aponte para o script.

    DECLARE @name VARCHAR(50) -- Nome do banco de dados  
    DECLARE @path VARCHAR(256) -- path for backup files  
    DECLARE @fileName VARCHAR(256) -- Nome para o backup  
    DECLARE @fileDate VARCHAR(20) -- Data para o nome do backup
     
    -- Especificando o diretório para os backups
    SET @path = 'D:\SuaPasta'  
     
    -- Especificando o formato fileDate
    SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112) 
     
    DECLARE db_cursor CURSOR READ_ONLY FOR  
    SELECT name 
    FROM master.sys.databases WHERE name NOT IN ('master','model','msdb','tempdb')  -- Excluindo estes bancos de dados
    AND state = 0 -- Banco de dados está online
    AND is_in_standby = 0 -- banco de dados não é somente leitura para envio de log
     
    OPEN db_cursor   
    FETCH NEXT FROM db_cursor INTO @name   
     
    WHILE @@FETCH_STATUS = 0   
    BEGIN   
       SET @fileName = @path + @name + '_' + @fileDate + '.BAK'  
       BACKUP DATABASE @name TO DISK = @fileName  
     
       FETCH NEXT FROM db_cursor INTO @name   
    END   
    
     
    CLOSE db_cursor   
    DEALLOCATE db_cursor

    jeudi 23 juillet 2020 19:55

Toutes les réponses

  • Boa tarde,

    Tente assim:

    echo off
    
    sqlcmd -S "NomeServidorSQL" -i "Informe o caminho do script sQL"
    forfiles -p "Informe o diretorio onde será armazenado o backup" -s -m *.bak* /D -4 /C "cmd /c del @path"
    
    @pause
    
    echo. Executando backup banco de dados Aguarde...
    
    echo.

    jeudi 23 juillet 2020 19:28
  • Edvado boa tarde 

    coloca essas informações no .BAT ?

    jeudi 23 juillet 2020 19:42
  • Isso mesmo, copia o código que eu informei, altere onde está comentado.

    Obs.: Mantenha as aspas.


    • Modifié Edvaldo A jeudi 23 juillet 2020 19:58 erro de português
    jeudi 23 juillet 2020 19:45
  • não entendi essa parte 
    Informe o caminho do script sQL
    jeudi 23 juillet 2020 19:49
  • Vc criou o script SQL para fazer o backup ?

    Quando vc acionar a .BAT, ela irá executar o script SQL responsável por gerar o backup da sua(s) base de dados.

    jeudi 23 juillet 2020 19:52
  • Não só criei esse .BAT que tinha informado acima mesmo 
    jeudi 23 juillet 2020 19:55
  • Segue um script SQL para gerar o backup, basta vc editar as linhas comentadas. Salve o script e na .BAT aponte para o script.

    DECLARE @name VARCHAR(50) -- Nome do banco de dados  
    DECLARE @path VARCHAR(256) -- path for backup files  
    DECLARE @fileName VARCHAR(256) -- Nome para o backup  
    DECLARE @fileDate VARCHAR(20) -- Data para o nome do backup
     
    -- Especificando o diretório para os backups
    SET @path = 'D:\SuaPasta'  
     
    -- Especificando o formato fileDate
    SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112) 
     
    DECLARE db_cursor CURSOR READ_ONLY FOR  
    SELECT name 
    FROM master.sys.databases WHERE name NOT IN ('master','model','msdb','tempdb')  -- Excluindo estes bancos de dados
    AND state = 0 -- Banco de dados está online
    AND is_in_standby = 0 -- banco de dados não é somente leitura para envio de log
     
    OPEN db_cursor   
    FETCH NEXT FROM db_cursor INTO @name   
     
    WHILE @@FETCH_STATUS = 0   
    BEGIN   
       SET @fileName = @path + @name + '_' + @fileDate + '.BAK'  
       BACKUP DATABASE @name TO DISK = @fileName  
     
       FETCH NEXT FROM db_cursor INTO @name   
    END   
    
     
    CLOSE db_cursor   
    DEALLOCATE db_cursor

    jeudi 23 juillet 2020 19:55
  • Precisa criar o script SQL para o backup, deixei um modelo.
    jeudi 23 juillet 2020 20:00
  • Beleza, vou fazer aqui 

    Obrigado por enquanto 

    jeudi 23 juillet 2020 20:22
  • Olá amigos,

    Somente para ajudar: 

    Na .bat criada tem uma linha bastante interessante que é bom ficar atento: 

    forfiles -p "Informe o diretorio onde será armazenado o backup" -s -m *.bak* /D -4 /C "cmd /c del @path"
    

    Nesta linha, o parametro 'D -4'  informa que serão deletados os arquivos com a extensão .bak (ou seja os backups) com mais de 4 dias. 

    Neste caso , valide se sua retenção de acordo com o valor e altere se necessário.

    provalmente vocÊ irá deixar o script .bat em um agendamento talvez diário e neste caso é bom ficar atento.


    Se esta resposta lhe ajudou, marque-a como útil para que outra pessoa com dúvida ou problema semelhante possa encontrar resposta ou ajuda mais facilmente. * Jefferson Clyton Pereira da Silva - [ MCSA | MCP | MCTS | MTA | Analista de Banco de Dados - Sql Server e Oracle ]

    mardi 28 juillet 2020 02:01
  • Olá amigos,

    Somente para ajudar: 

    Na .bat criada tem uma linha bastante interessante que é bom ficar atento: 

    forfiles -p "Informe o diretorio onde será armazenado o backup" -s -m *.bak* /D -4 /C "cmd /c del @path"
    

    Nesta linha, o parametro 'D -4'  informa que serão deletados os arquivos com a extensão .bak (ou seja os backups) com mais de 4 dias. 

    Neste caso , valide se sua retenção de acordo com o valor e altere se necessário.

    provalmente vocÊ irá deixar o script .bat em um agendamento talvez diário e neste caso é bom ficar atento.


    Se esta resposta lhe ajudou, marque-a como útil para que outra pessoa com dúvida ou problema semelhante possa encontrar resposta ou ajuda mais facilmente. * Jefferson Clyton Pereira da Silva - [ MCSA | MCP | MCTS | MTA | Analista de Banco de Dados - Sql Server e Oracle ]

    Obrigado pelo o apontamento, esqueci de mencionar isso.
    mardi 28 juillet 2020 15:05
  • Olá amigos,

    Somente para ajudar: 

    Na .bat criada tem uma linha bastante interessante que é bom ficar atento: 

    forfiles -p "Informe o diretorio onde será armazenado o backup" -s -m *.bak* /D -4 /C "cmd /c del @path"
    

    Nesta linha, o parametro 'D -4'  informa que serão deletados os arquivos com a extensão .bak (ou seja os backups) com mais de 4 dias. 

    Neste caso , valide se sua retenção de acordo com o valor e altere se necessário.

    provalmente vocÊ irá deixar o script .bat em um agendamento talvez diário e neste caso é bom ficar atento.


    Se esta resposta lhe ajudou, marque-a como útil para que outra pessoa com dúvida ou problema semelhante possa encontrar resposta ou ajuda mais facilmente. * Jefferson Clyton Pereira da Silva - [ MCSA | MCP | MCTS | MTA | Analista de Banco de Dados - Sql Server e Oracle ]

    Jefferson,

    Ótima observação.


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | MTAC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    mardi 28 juillet 2020 21:09
    Modérateur