Eu fiz um procedimento armazenado restoredatabase
que retorna código para restaurar um banco de dados. O script de saída fica assim:
restore database [DB] from disk='F:\FULL1.bak' with norecovery
restore database [DB] from disk='F:\DIFF1.bak' with norecovery
restore log [DB] from disk='F:\log1.bak' with norecovery
restore log [DB] from disk='F:\log2.bak' with norecovery
...
restore log [DB] from disk='F:\logN.bak' with norecovery
restore database [DB] with recovery
Ao longo do SP, as linhas são adicionadas a um parâmetro @sql varchar(max)
que, ao final, é impresso com print(@sql)
, e se o usuário especificou o sinalizador correto, é executado com exec(@sql)
. Ambos funcionam perfeitamente. No entanto, ao chamar o SP com sqlcmd assim:
set restoresql=exec restoredatabase @DB='Databasename', @Execute='y'
sqlcmd -h-1 -S SRV\T2 -U sa -P sa -d master -Q "%restoresql%" -o output.txt
O arquivo de saída output.txt
sempre terá no máximo 4002 caracteres.
Eu tentei adicionar, -y 8000
mas isso não ajuda. Como posso obter o arquivo de saída para me fornecer o script gerado completo?