Voyons comment retrouver le dossier dans lequel sont stockés par défaut les sauvegardes de vos bases de données de deux façons :
– Avec SQL Server Management Studio
– Avec procédure stockée étendue non documentée xp_instance_regread
En effet avec SQL Server Management Studio, on peut bien retrouver où seront, par défaut, stockés les fichiers de la base de données, mais pas leurs sauvegardes :
Si nous regardons dans les Propriétés/Properties de l’instance :
en ouvrant la page « Database Settings »/ »Options », nous obtenons :
C’est en fait dans ce dossier que les fichiers de sauvegarde seront stockés par défaut.
Un petit manque de précision de Microsoft !
Le chemin du dossier est également stocké dans la base de registres, sous la clé suivante :
HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\MSSQLServer pour la valeur BackupDirectory.
On peut donc s’amuser à la rechercher à l’aide du bien connu Regedit, mais on peut aussi l’obtenir à l’aide d’une procédure étendue système non documentée qui permet de lire les valeurs stockées dans la base de registres : xp_instance_regread
EXEC master.dbo.xp_instance_regread
N’HKEY_LOCAL_MACHINE’,
N’Software\Microsoft\MSSQLServer\MSSQLServer’,
N’BackupDirectory’
Nous retourne également :
En effet si vous exécutons l’instruction suivante :
BACKUP DATABASE ELSUKET
TO DISK = ‘ELSUKET.bak’ *
Et que nous explorons le système de gestion de fichiers :
Malheureusement pour changer de dossier, nous n’avons que les deux solutions suivantes :
– Spécifier dans l’instruction BACKUP, le chemin complet du dossier qui recevra les fichiers de sauvegardes de bases de données
– Modifier la valeur de la clé de registre citée plus haut
Bonnes sauvegardes !
ElSüket
Merci pour le tuyau !
SELECT TOP 1 @backupdir = QUOTENAME(LEFT(physical_device_name, LEN(physical_device_name) – CHARINDEX( », REVERSE(physical_device_name))))
FROM msdb.dbo.backupset AS bs
JOIN msdb.dbo.backupmediafamily AS bf
ON bs.media_set_id = bf.media_set_id
WHERE bs.database_name = base_de_donnees_concernee
ORDER BY bs.backup_finish_date DESC;
++
Encore une une méthode pour compléter :-). En effet il arrive certaines fois de ne pas retrouver le chemin par défaut avec la procédure xp_instance_readreg. Dand ce cas par script je tente de retrouver le dernier path de la dernière sauvegarde pour la base de données concernant. Bien entendu cela suppose qu’au moins une sauvegarde ait été initiée.
SELECT TOP 1 @backupdir = QUOTENAME(LEFT(physical_device_name, LEN(physical_device_name) – CHARINDEX( », REVERSE(physical_device_name))))
FROM msdb.dbo.backupset AS bs
JOIN msdb.dbo.backupmediafamily AS bf
ON bs.media_set_id = bf.media_set_id
WHERE bs.database_name =
ORDER BY bs.backup_finish_date DESC;
++