Ao emitir um comando de backup em um procedimento armazenado que usa um try catch e sql dinâmico, as mensagens de erro são muito gerais quando comparadas à execução direta do comando de backup.
Try / Catch dentro de SP:
begin try
execute sp_executesql @sql; -- a backup command
end try
begin catch
print ERROR_MESSAGE(); -- save to log, etc.
end catch
Resulta em
50000: usp_Backup: 117: BACKUP DATABASE está sendo finalizado de forma anormal.
wheareas emitindo o comando raw:
backup DATABASE someDb to disk...
Resultados em melhores detalhes:
Erro de pesquisa - Erro no banco de dados do SQL Server: Ocorreu um erro irrecuperável de E / S no arquivo "H: \ FolderName \ Filename.bak:" 112 (não há espaço suficiente no disco.).
Existe uma maneira de capturar esses detalhes em variáveis dentro do procedimento armazenado (para registrar, retornar ao chamador, para repetir a lógica)? Parece que os detalhes estão chegando no canal de mensagens, mas eu gostaria que eles estivessem disponíveis no SP.