none
Backup RRS feed

  • Pergunta

  •  

    Boa tarde Gente....como faço para gerar um backup para o disco, mas de modo que o nome do arquivo gerado siga o seguinte padrão:

     

    <nome do arquivo>_YYYYMMDD_HHMMSS.bak

     

    alguém tem ideía????

    quarta-feira, 15 de outubro de 2008 20:10

Respostas

  • Boa Tarde,

     

    Sim. Isso é possível. Tente o seguinte:

     

    Code Snippet

    DECLARE @Banco VARCHAR(50), @Path VARCHAR(100), @Sufixo CHAR(19), @cmdSQL VARCHAR(300)

    SET @Banco = 'AlgumBanco'

    SET @Path = 'D:\Backups\'

    SET @cmdSQL = 'BACKUP DATABASE ' + @Banco + ' TO DISK = ' + '''' + @Path + @Banco

    SET @Sufixo = CONVERT(CHAR(8),GETDATE(),112) + '_' + REPLACE(CONVERT(VARCHAR(20),GETDATE(),108),':','') + '.BAK'

    SET @cmdSQL = @cmdSQL + @Sufixo + ''''

    exec(@cmdSQL)

     

     

    [ ]s,

     

    Gustavo

    quarta-feira, 15 de outubro de 2008 20:43
  • Boa Tarde Edgar,

     

    Eu queria propriamente o resultado do PRINT, mas como deu erro, percebi que o problema não está na execução do comando, mas na montagem do mesmo. Tente da seguinte forma:

     

    Code Snippet

    DECLARE @Banco VARCHAR(50), @Path VARCHAR(100), @Sufixo CHAR(19), @cmdSQL VARCHAR(300)

    SET @Banco = 'AlgumBanco'

    SET @Path = 'D:\Backups\'

    SET @cmdSQL = ' BACKUP LOG ' + @Banco + ' TO DISK = ' + '''' + @Path + @Banco

    SET @Sufixo = CONVERT(CHAR(8),GETDATE(),112) + '_' + REPLACE(CONVERT(VARCHAR(20),GETDATE(),108),':','') + '.TRN'

    SET @cmdSQL = @cmdSQL + '_' + @Sufixo + '''' + ' WITH NO_TRUNCATE'

    --PRINT @CMDSQL

    EXEC(@CMDSQL)

     

     

    [ ]s,

     

    Gustavo

    quinta-feira, 16 de outubro de 2008 18:21

Todas as Respostas

  • Boa Tarde,

     

    Sim. Isso é possível. Tente o seguinte:

     

    Code Snippet

    DECLARE @Banco VARCHAR(50), @Path VARCHAR(100), @Sufixo CHAR(19), @cmdSQL VARCHAR(300)

    SET @Banco = 'AlgumBanco'

    SET @Path = 'D:\Backups\'

    SET @cmdSQL = 'BACKUP DATABASE ' + @Banco + ' TO DISK = ' + '''' + @Path + @Banco

    SET @Sufixo = CONVERT(CHAR(8),GETDATE(),112) + '_' + REPLACE(CONVERT(VARCHAR(20),GETDATE(),108),':','') + '.BAK'

    SET @cmdSQL = @cmdSQL + @Sufixo + ''''

    exec(@cmdSQL)

     

     

    [ ]s,

     

    Gustavo

    quarta-feira, 15 de outubro de 2008 20:43
  •  

    Grato...serviu perfeitamente...só fiz um acréscimo...vou rodar isto em job....

    DECLARE @Banco VARCHAR(50), @Path VARCHAR(100), @Sufixo CHAR(19), @cmdSQL VARCHAR(300)

    SET @Banco = 'AlgumBanco'

    SET @Path = 'D:\Backups\'

    SET @cmdSQL = 'BACKUP DATABASE ' + @Banco + ' TO DISK = ' + '''' + @Path + @Banco

    SET @Sufixo = CONVERT(CHAR(8),GETDATE(),112) + '_' + REPLACE(CONVERT(VARCHAR(20),GETDATE(),108),':','') + '.BAK'

    SET @cmdSQL = @cmdSQL + '_' +  @Sufixo + ''''

    exec(@cmdSQL)

     

    Tentei alterar para rodar também como log...mas ele me informa erro.....mas não consegui identificar qual.....

     

    DECLARE @Banco VARCHAR(50), @Path VARCHAR(100), @Sufixo CHAR(19), @cmdSQL VARCHAR(300)

    SET @Banco = 'AlgumBanco'

    SET @Path = 'D:\Backups\'

    SET @cmdSQL = 'BACKUP LOG WITH NO_TRUNCATE' + @Banco + ' TO DISK = ' + '''' + @Path + @Banco

    SET @Sufixo = CONVERT(CHAR(8),GETDATE(),112) + '_' + REPLACE(CONVERT(VARCHAR(20),GETDATE(),108),':','') + '.BAK'

    SET @cmdSQL = @cmdSQL + '_' +  @Sufixo + ''''

    exec(@cmdSQL)


     

    quinta-feira, 16 de outubro de 2008 13:10
  • Bom Dia,

     

    O parâmentro WITH NO_TRUNCATE deve vir após a especificação do disco (e não antes). Lembre-se também de diferenciar a extensão do arquivo de LOG. Sugiro usar .TRN ao invés de .BAK. Se usar tudo como .BAK funciona também, mas você terá dificuldades em distinguir o que é backup full e o que é backup de log (a menos que coloque essa informação no sufixo).

     

    [ ]s,

     

    Gustavo

     

    quinta-feira, 16 de outubro de 2008 13:30
  • Fiz estas alterações...mas mesmo assim ainda me retorna erro..o erro segundo o sql está no with no_truncate...mas ele está depois do to disk....tb alterei a extensão do arquivo...mesmo assim o erro persiste...

     

    DECLARE @Banco VARCHAR(50), @Path VARCHAR(100), @Sufixo CHAR(19), @cmdSQL VARCHAR(300)

    SET @Banco = 'AlgumBanco'

    SET @Path = 'D:\Backups\'

    SET @cmdSQL = ' BACKUP LOG '  + @Banco + ' TO DISK = ' ' WITH NO_TRUNCATE' + ' ' ' ' + @Path + @Banco

    SET @Sufixo = CONVERT(CHAR(8),GETDATE(),112) + '_' + REPLACE(CONVERT(VARCHAR(20),GETDATE(),108),':','') + '.TRN'

    SET @cmdSQL = @cmdSQL + '_' +  @Sufixo + ''''

    exec(@cmdSQL)

    quinta-feira, 16 de outubro de 2008 13:42
  • Olá Edgar,

     

    Ao invés de rodar exec(@cmdSQL) dê um PRINT @cmdSQL para sabermos o comando completo.

     

    [ ]s,

     

    Gustavo

    quinta-feira, 16 de outubro de 2008 14:01
  • Gustavo....alterando o comando exec para print ele exibe somente este erro

     

    Server: Msg 170, Level 15, State 1, Line 7
    Line 7: Incorrect syntax near ' WITH NO_TRUNCATE'.

     

     

    quinta-feira, 16 de outubro de 2008 18:09
  • Boa Tarde Edgar,

     

    Eu queria propriamente o resultado do PRINT, mas como deu erro, percebi que o problema não está na execução do comando, mas na montagem do mesmo. Tente da seguinte forma:

     

    Code Snippet

    DECLARE @Banco VARCHAR(50), @Path VARCHAR(100), @Sufixo CHAR(19), @cmdSQL VARCHAR(300)

    SET @Banco = 'AlgumBanco'

    SET @Path = 'D:\Backups\'

    SET @cmdSQL = ' BACKUP LOG ' + @Banco + ' TO DISK = ' + '''' + @Path + @Banco

    SET @Sufixo = CONVERT(CHAR(8),GETDATE(),112) + '_' + REPLACE(CONVERT(VARCHAR(20),GETDATE(),108),':','') + '.TRN'

    SET @cmdSQL = @cmdSQL + '_' + @Sufixo + '''' + ' WITH NO_TRUNCATE'

    --PRINT @CMDSQL

    EXEC(@CMDSQL)

     

     

    [ ]s,

     

    Gustavo

    quinta-feira, 16 de outubro de 2008 18:21
  • Então Gustavo...eu tb já havia colocado o WITH NO_TRUNCATE neste mesmo local, porém, tb havia dado erro...mas agora funcionou corretamente...creio que o erro se devia ao fato de não ter utilizado os itens     + ' '

    agora funcionou e exibiu corretamente:

     

     BACKUP LOG pubs TO DISK = 'c:\Backup\pubs_20081016_163038.TRN' WITH NO_TRUNCATE

     

     

    Grato!!!!

     

     

     

    quinta-feira, 16 de outubro de 2008 18:35