Comment restaurer la dernière sauvegarde depuis un fichier multisauvegarde (device) ?

La procédure suivante permet de restaurer la dernière sauvegarde empilée dans un fichier multi sauvegardes.

Créez une table temporaire ayant la même structure que la table résultant de la requête RESTORE FILELISTONLY :


CREATE TABLE #BACKUPS
(LogicalName          nvarchar(128),
 PhysicalName         nvarchar(260),
 "Type"               char(1),  
 FileGroupName        nvarchar(128),
 Size                 numeric(20,0),
 MaxSize              numeric(20,0),
 FileID               bigint,
 CreateLSN            numeric(25,0),  
 DropLSN              numeric(25,0),
 UniqueID             uniqueidentifier,
 ReadOnlyLSN          numeric(25,0),
 ReadWriteLSN         numeric(25,0),
 BackupSizeInBytes    bigint,
 SourceBlockSize      int,
 FileGroupID          int,
 LogGroupGUID         uniqueidentifier,
 DifferentialBaseLSN  numeric(25,0),
 DifferentialBaseGUID uniqueidentifier,
 IsReadOnly           bit,
 IsPresent            bit,
 TDEThumbprint        varbinary(32));

Injectez les méta données de backup dedans :

INSERT INTO #BACKUPS
EXEC ('RESTORE FILELISTONLY FROM DISK = ''...''') ;

Extrayez le dernier fileId et réinjectez le dans la commande de restauration :

DECLARE @FILE BIGINT;
 
SELECT @FILE = MAX(FileID)
FROM #BACKUPS;
 
RESTORE DATABASE ???
FROM DISK = '...'
WITH FILE = @FILE;

Et voilà !

NOTA : la table n’est pas tout à fait la même pour toutes les version de SQL Server. En particulier la colonne TDEThumbprint n’apparait qu’à partir de la version 2008.


Frédéric BROUARD, Spécialiste modélisation, bases de données, optimisation, langage SQL.
Le site sur le langage SQL et les S.G.B.D. relationnels : http://sqlpro.developpez.com/
Expert SQL Server http://www.sqlspot.com : audit, optimisation, tuning, formation
* * * * * Enseignant au CNAM PACA et à l’ISEN à Toulon * * * * *

Laisser un commentaire