Contexte :
Nous avons un script de sauvegarde qui a besoin de xp_cmdshell pour fonctionner. J'ai décidé que sur les nouveaux serveurs, nous n'allions pas activer xp_cmdshell. J'ai activé xp_cmdshell au début du travail et je l'ai désactivé à la fin. Le problème est que si une sauvegarde complète démarre et que la sauvegarde horaire du journal s'exécute et se termine, xp_cmdshell sera désactivé et la sauvegarde horaire échouera.
Cela m'a conduit à essayer de détecter si un travail est en cours, etc. Mais n'y a-t-il pas une meilleure façon de nettoyer ?
La question réelle :
Comment puis-je supprimer d'anciens fichiers de sauvegarde après l'exécution d'une tâche de sauvegarde réussie ?
Il doit être programmable, ce qui exclut les plans de maintenance si j'ai bien compris.
Il n'utiliserait pas xp_cmdshell pour éviter toute cette histoire d'interaction des tâches et suivre les bonnes pratiques.
Le meilleur scénario serait de le laisser s'exécuter à partir du script de sauvegarde, de manière à ce qu'il supprime les fichiers de sauvegarde après une sauvegarde réussie. En cas d'erreur dans une sauvegarde, quelle qu'en soit la raison, cela permet à la sauvegarde de se poursuivre pour les autres bases de données.
Spéculation : Peut-être qu'un script powershell script ferait l'affaire ? Cela pourrait être scripté dans une étape de travail et exécuté conditionnellement en cas de succès... mais alors tout se passe à la fin, laissant des sauvegardes si nous échouons à mi-chemin - le disque de sauvegarde devrait alors être nettoyé manuellement si nous sommes à court d'espace.
Peut-être devrais-je simplement vérifier si le travail horaire est en cours d'exécution lorsque je vais désactiver xp_cmdshell dans le travail horaire. C'est ce que je vais probablement faire, mais que feriez-vous ? ?