3 votes

Le plan de sauvegarde de SQL Server 2008 R2 ne supprime pas les fichiers datant de plus de X jours définis dans le plan de maintenance

Nous avons un plan de maintenance des bases de données configuré pour effectuer une sauvegarde complète de toutes les bases de données des utilisateurs chaque nuit. Les sauvegardes sont configurées pour expirer après sept jours et elles sont sauvegardées sur le disque avec l'extension de fichier "bak".

Le problème est que la tâche ne supprime pas les jeux de sauvegarde datant de plus de sept jours (il en va de même pour la tâche qui sauvegarde le journal des transactions).

Toutes les bases de données sauvegardées ont leur modèle de récupération réglé sur "Full".

L'agent SQL Server se connecte en tant que système local et "SYSTEM" a tous les droits sur les dossiers où ces sauvegardes sont bieng sauvegardées.

Les travaux ne signalent aucune erreur lorsqu'ils sont exécutés manuellement et il n'y a aucune erreur dans les fichiers journaux.

Si je crée un plan de maintenance de test pour supprimer des fichiers texte dans un répertoire et que j'exécute la T-SQL générée, la commande se termine avec succès mais le fichier texte dans le répertoire n'est pas supprimé.

EXECUTE master.dbo.xp_delete_file 0,N'D:\TEST',N'.txt'

Je sais que c'est un problème de droits mais tout semble correct de notre côté.

Quelqu'un a une idée ?

Merci.

1voto

Warren Blanchet Points 881

C'est juste un essai, mais j'ai été piqué par l'inclusion d'un "." dans la boîte d'extension de fichier lors de la création de plans de maintenance. Vérifiez si vous avez ".bak" au lieu de "bak".

1voto

Leif Points 436

D'après ce que j'ai compris, vous les supprimez dans le plan de maintenance à l'aide d'une méthode spéciale. Tâche de nettoyage de la maintenance ou via la tâche "Execute T-SQL Statement" ? Bien que cela ne devrait pas avoir d'importance.

En regardant votre déclaration SQL, je pense que cela pourrait être l'extension du fichier : elle devrait être sans point, juste l'extension par elle-même.

Je doute qu'il s'agisse d'un problème de permission puisque vous êtes en mesure de créer des sauvegardes en premier lieu. Mais vérifiez si SQLServerMSSQLUser$... a un accès complet - c'est ainsi que je l'ai sur tous les emplacements de "sauvegarde" (ces permissions devraient être mises en place automatiquement si vous définissez ce dossier comme destination de sauvegarde par défaut lors de la configuration initiale).


AFAIK xp_delete_file est non documenté et je n'ai trouvé aucune référence à ce sujet dans les livres de SQL. Apparemment, le serveur SQL vérifie de quel fichier il s'agit avant de le supprimer -- il ne fonctionne qu'avec ses propres fichiers (pour éviter une mauvaise utilisation/sécurité, je suppose). Voici le format et les paramètres :

EXECUTE master.sys.xp_delete_file
0, -- FileTypeSelected (0 = FileBackup, 1 = FileReport)
N'D:\SQLbackups\', -- folder path (trailing slash)
N'bak', -- file extension which needs to be deleted (no dot)
N'2011-06-15T15:10:04', -- date prior which to delete
1 -- subfolder flag (1 = include files in first subfolder level, 0 = not)

En regardant votre exemple de déclaration SQL, je vois plusieurs différences :

  • Dans le premier paramètre, vous avez 0 (sauvegardes de fichiers) mais vous essayez de supprimer un fichier texte.
  • L'extension du fichier doit exclure le point
  • Vous devez indiquer la date d'expiration (les fichiers plus anciens seront supprimés).

Lien : http://sqlblog.com/blogs/andy_leonard/archive/2009/03/11/xp-delete-file.aspx

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X