Lors de l'émission d'une commande de sauvegarde dans une procédure stockée qui utilise un catch catch et un SQL dynamique, les messages d'erreur sont très généraux par rapport à l'exécution directe de la commande de sauvegarde.
Essayez / Catch dans SP:
begin try
execute sp_executesql @sql; -- a backup command
end try
begin catch
print ERROR_MESSAGE(); -- save to log, etc.
end catch
Résulte en
50000: usp_Backup: 117: BACKUP DATABASE se termine anormalement.
wheareas émettant la commande brute:
backup DATABASE someDb to disk...
Des résultats plus détaillés:
Erreur de recherche - Erreur de base de données SQL Server: une erreur d'E / S non récupérable s'est produite sur le fichier "H: \ FolderName \ Filename.bak:" 112 (il n'y a pas assez d'espace sur le disque.).
Existe-t-il un moyen d'attraper ces détails dans des variables au sein de la procédure stockée (pour se connecter, renvoyer à l'appelant, pour la logique de nouvelle tentative)? Il semble que les détails arrivent sur le canal de message mais je voudrais qu'ils soient disponibles dans le SP.