La tâche de nettoyage de maintenance de SQL fonctionne mais ne supprime pas

j'ai un plan de Maintenance qui est censé passer par le dossier de sauvegarde et tout supprimer .bak âgé de plus de 5 jours. Quand je dirige le travail, il me donne un message de réussite, mais plus vieux .les fichiers bak sont toujours présents.

j'ai essayé la marche à la question suivante: https://serverfault.com/questions/245493/sql-maintenance-cleanup-task-success-but-not-deleting-files

Result is column IsDamaged = 0

j'ai vérifié avec la question suivante et ce n'est pas mon problème: https://serverfault.com/questions/94094/maintenance-cleanup-tasks-running-successfully-but-not-deleting-back-up-files

j'ai aussi essayé de supprimer le travail et le Plan D'entretien et de recréer, mais en vain.

des idées?

30
demandé sur Community 2011-03-16 18:07:50

10 réponses

Essayez ces vérifications:

  1. utiliser *.* pour l'extension de fichier ou bak sans dot, les deux que j'ai trouvé du travail si d'autres questions sont correct aussi.
  2. assurez-vous que le chemin est simplement le chemin vers où vos sauvegardes sont mais avec un antislash à la fin.
  3. vérifiez que verify est cliqué lorsque vous créez la sauvegarde en premier lieu.
46
répondu sturb 2016-01-14 21:07:06

Ceci est souvent causé par des problèmes de permission. La tâche de nettoyage ne semble pas enregistrer quoi que ce soit d'utile lorsque les permissions empêchent le compte sous lequel l'étape s'exécute de supprimer des fichiers.

Vous pouvez le vérifier comme suit:

  • dans SQL Server Management Studio, faites un clic droit sur votre plan de maintenance et sélectionnez "Modifier"
  • Localisez la tâche de nettoyage de Maintenance utilisée pour supprimer vos fichiers bak et cliquez sur le bouton "View T-SQL". Copiez le script dans votre presse - papiers-ce sera quelque chose comme " EXECUTE master.dbo.xp_delete_file ..."
  • Se connecter au serveur en utilisant un compte Windows qui a les permissions requises sur le dossier contenant les sauvegardes et exécuter le SQL
  • si les fichiers bak sont nettoyés, cela indique que la tâche plan de Maintenance est configurée correctement et que vous avez un problème de permissions.
  • In Management Studio, ouvrez la fenêtre de propriétés pour le travail (SQL Server Agent > Jobs), cliquez sur le bouton Edit sur la première étape. La section" exécuter sous " indiquera quel compte exécute la tâche.
5
répondu Dan Malcolm 2014-03-25 17:08:23

avait le même problème. La coupable est la .Bak extension. Change-le en Bak et tu seras Sage.

3
répondu jordan koskei 2013-06-25 15:49:42

je vais me mettre 2 cents dans, juste été sur cette question ainsi, ont nouveau déploiement avec SQL 2012. Les tâches de sauvegarde fonctionnaient correctement, cependant les tâches de nettoyage pour les journaux et les anciennes sauvegardes n'ont rien fait bien qu'elles aient été complétées avec succès.

le problème à mon avis parmi ces choses stupides, j'ai mis l'extension comme .bak et .txt , cependant dès que je les ai changés en .BAK et .TXT (en majuscules) il a commencé à fonctionner.

espérons qu'il aide quelqu'un qui dépannage problème similaire.

2
répondu Rost 2014-07-28 09:35:17

j'ai eu des problèmes similaires avec les emplois avant. Les cas que j'ai rencontrés sans la supprimer étaient parce qu'un emplacement n'était pas explicitement défini lorsque j'ai passé en revue l'interface graphique. Même si je n'ai rien changé, quand l'emplacement du chemin n'était pas spécifiquement indiqué, c'était comme s'il ne savait pas où regarder pour traiter la suppression de sorte qu'aucune suppression ne se produisait jamais. Il a fait marche arrière bien et tout était bon, mais il ne serait pas nettoyer comme spécifié dans le magicien/forme.

1
répondu Thyamine 2011-03-16 15:20:13

j'ai eu le même problème et j'ai essayé de le résoudre. Je pense que j'ai essayé toutes les combinaisons mais ça n'a pas marché. Notez que le fichier xp_delete_file n'est pas documenté et est évidemment très bogué.

mais ce que j'ai fait et que je peux vous aider, c'est de changer le pas en PowerShell.

vous pouvez utiliser ce qui suit pour supprimer les fichiers qui sont plus de 30 jours

get-childitem c:\sqlbackup -recurse / where {$151970920" .lastwritetime-lt (get-date).adddays(-30) et pas $ .psiscontainer} / % {remove-item $_.fullname-force-whatif}

noter le-whatif qui est ajouté afin que vous puissiez tester.

Mais dans mon cas ce n'était pas suffisant. Il y avait un problème de droits avec L'approche de PowerShell. Le compte qui exécute L'Agent SQL n'avait pas le droit de supprimer les fichiers. En réglant les droits correctement tout a fonctionné comme un charme.

Bonne chance

1
répondu Anders 2013-07-19 08:33:03

j'ai trouvé que je devais changer ma fréquence en jours de 1 semaine et puis il supprimerait les anciennes sauvegardes. Pourquoi, je ne sais pas, mais cela n'a résoudre le problème.

1
répondu Cindy 2014-07-09 15:57:16

assurez-vous de créer les plans de Maintenance dans le bon serveur SQL. Pour plus de détails,

si vous avez SQL Server 2005 et que vous créez maint. plans sous ce serveur SQL 2005, vous ne pourrez "nettoyer" (Supprimer) que les sauvegardes (Bak) et les journaux de transactions (trn) générés / sauvegardés à partir d'un serveur SQL Server 2005. Si vous avez essayé de nettoyer ces bak ou trn de 2008, 2008 R2, 2012 ou plus récent, ça ne marchera pas. (En raison de l'en-tête de fichier info). C'est, 2005 ne reconnaît pas ces fichiers en 2008 ou dans un format plus récent !

cependant, vous pouvez toujours nettoyer ces fichiers en créant maint. plans sous SQL Server 2008 et" nettoyer " ces fichiers de 2005 ~ 2012 (Testé).

qui signifie, 1. 2005 peut seulement nettoyer bak / trn dans le format 2005 2. 2008 peut nettoyer 2005 ~ 2012 format

Je n'ai pas eu la chance de tester 2000 (trop vieux) ou 2014 (trop Nouveau). Mais je pense que 2014 devrait fonctionner à partir de 2008.

1
répondu Chjquest 2014-07-17 16:43:28

pour y jeter mes 2 cents...le mien était en panne quand j'ai essayé de supprimer les fichiers de maintenance. Bien que j'ai eu l'extension et l'emplacement de fichier réglé correctement, j'avais oublié de le mettre des fichiers de sauvegarde aux fichiers de plan de Maintenance.

0
répondu PseudoToad 2014-01-08 18:08:27
Le numéro

m'a rendue folle. J'ai un travail autour, bien que d'autres serveurs utilisent le plan de maintenance sans problème. J'ai copié le script T-SQL et fait un sp en changeant le dbo en sys . Il fonctionne pour moi.

Create Procedure bk_removeTLogBackupFiles
as
Declare @DeleteDate varchar(50)
Declare @DeleteExecuteSQL varchar(1000)
Set @DeleteDate = cast(DATEADD(day,-7,GetDate()) as varchar(50))
Set   @DeleteExecuteSQL =
'EXECUTE master.sys.xp_delete_file 0,N''\Backupserver\BackupFolder\' + @@servername + '\User'',N''trn'',N' + quotename(@DeleteDate,'''') +  ',1'


Execute (@DeleteExecuteSQL)

c'est un script générique que j'utilise pour toutes mes sauvegardes allant à un certain serveur avec la sécurité dans le serveur\folder leverl trié en dossiers pour le système d'utilisateur, etc. Pas beaucoup, mais il a travaillé pour moi.

0
répondu Harold 2014-02-04 18:36:40