Usuário com melhor resposta
Backup

Pergunta
-
Respostas
-
Boa Tarde,
Sim. Isso é possível. Tente o seguinte:
Code SnippetDECLARE
@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 + @BancoSET
@Sufixo = CONVERT(CHAR(8),GETDATE(),112) + '_' + REPLACE(CONVERT(VARCHAR(20),GETDATE(),108),':','') + '.BAK'SET
@cmdSQL = @cmdSQL + @Sufixo + ''''exec
(@cmdSQL)[ ]s,
Gustavo
-
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 SnippetDECLARE
@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 + @BancoSET
@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
Todas as Respostas
-
Boa Tarde,
Sim. Isso é possível. Tente o seguinte:
Code SnippetDECLARE
@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 + @BancoSET
@Sufixo = CONVERT(CHAR(8),GETDATE(),112) + '_' + REPLACE(CONVERT(VARCHAR(20),GETDATE(),108),':','') + '.BAK'SET
@cmdSQL = @cmdSQL + @Sufixo + ''''exec
(@cmdSQL)[ ]s,
Gustavo
-
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 + @BancoSET
@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 + @BancoSET @Sufixo = CONVERT(CHAR(8),GETDATE(),112) + '_' + REPLACE(CONVERT(VARCHAR(20),GETDATE(),108),':','') + '.BAK'
SET
@cmdSQL = @cmdSQL + '_' + @Sufixo + ''''exec
(@cmdSQL)
-
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
-
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 + @BancoSET @Sufixo = CONVERT(CHAR(8),GETDATE(),112) + '_' + REPLACE(CONVERT(VARCHAR(20),GETDATE(),108),':','') + '.TRN'
SET
@cmdSQL = @cmdSQL + '_' + @Sufixo + ''''exec
(@cmdSQL) -
-
-
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 SnippetDECLARE
@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 + @BancoSET
@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
-
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!!!!