none
Tem como incluir a data no final do arquivo???? RRS feed

  • Pergunta

  • Senhores tenho conseguido realizar o backup numa boa, com as instruções, só gostaria de ter várias versões do arquivo e no caso com as respectivas datas dos dias em que foi realizado. No job que criei ele apenas sobrescreve o arquivo anterior. Alguem sabe como acrescentar a data no final do arquivo? qual a variavel de sistema pra isso???

    terça-feira, 11 de dezembro de 2007 18:21

Todas as Respostas

  • Boa Tarde,

     

    Isso é possível de ser feito se você utilizar planos de manutenção. Admitindo que você deseja fazer isso apenas com o comando, será necessário gerar uma SQL dinâmica para isso. Algo bem similar ao script abaixo:

     

    DECLARE @banco VARCHAR(100)

    DECLARE @local VARCHAR(200)

    DECLARE @cmdSQL VARCHAR(1000)

    DECLARE @marca CHAR(8)

    SET @banco = 'MeuBanco'

    SET @local = 'C:\Backups\'

    SET @marca =

    CAST(YEAR(GETDATE()) AS CHAR(4)) +

    RIGHT('0' + CAST(MONTH(GETDATE()) AS VARCHAR(2)),2) +

    RIGHT('0' + CAST(DAY(GETDATE()) AS VARCHAR(2)),2)

    SET @cmdSQL = 'BACKUP DATABASE ' + @banco + ' TO DISK = ' + ''''

    SET @cmdSQL = @cmdSQL + @local + @banco + @marca + '.BAK' + ''''

    EXEC(@cmdSQL)

     

    Você pode evoluir essa construção para colocar outros parâmetros como a hora, o minuto, o segundo, etc. É possível também avaliar o tipo de backup e executar a instrução correspondente (backup database, backup log), etc.

     

    [ ]s,

     

    Gustavo

     

     

     

    terça-feira, 11 de dezembro de 2007 18:55
  • Marcos,

     

    Tem sim, veja este código de exemplo:

     

    Code Block

    Declare @Comando VarChar(1000)

     

    Set @comando='Backup Database Laboratorio To Disk = ''F:\SYS\MSSQL_BACKUP\Laboratorio-Diff.bak'

    +Convert(Char(10),GetDate(),103)

    +' With Differential, Init,

    Description=''Backup Laboratório - Posição diferencial em relação ao Backup Full'

     

    Select @Comando

     

     

    quarta-feira, 12 de dezembro de 2007 11:34
    Moderador
  • Oi Jr.

     

    Sua tentativa foi boa e bem mais fácil e direta que a minha.

    No entanto, utilizar o CONVERT vai trazer os caractéres "/" e nesse caso o caminho do backup ficará inválido. Uma tentativa melhor seria:

     

    Declare @Comando VarChar(1000)

    Set @comando='Backup Database Laboratorio To Disk = ''F:\SYS\MSSQL_BACKUP\Laboratorio-Diff.bak'

    +Convert(Char(10),GetDate(),112)

    +' With Differential, Init,

    Description=''Backup Laboratório - Posição diferencial em relação ao Backup Full'

    Select @Comando

     

    Ainda que mais "direta", gosto de colocar da forma como postei, pelo fato de haver mais controle no formato data, hora, etc. O Convert sozinho não conseguiria colocar algo no formato YYYYMMDD_HHMM por exemplo.

     

    [ ]s,

     

    Gustavo

     

     

    quarta-feira, 12 de dezembro de 2007 15:19
  • Gustavo,

     

    Realmente me esqueci deste detalhe, muito bem lembrado.

     

    Mas acredito que este exemplo pode ajudar sim!!!

    quarta-feira, 12 de dezembro de 2007 15:56
    Moderador
  • Claro com certeza...

    É só adaptar, afinal foi apenas um exemplo.

     

    [ ]s,

     

    quarta-feira, 12 de dezembro de 2007 16:02
  • Gustavo,

     

    Isso mesmo é questão de analisar e fazer as adaptações necessárias.

    quarta-feira, 12 de dezembro de 2007 16:09
    Moderador