TSQL – Procédures stockées – Restore DataBase

CREATE TABLE #fileList(line varchar(2000))
INSERT INTO #fileList 
     EXEC xp_cmdshell 'dir /b e:\backup | sed -e "s/.BAK//" '
SELECT line FROM #fileList WHERE line IS NOT NULL ORDER BY 1

Procédure stockées

CREATE PROCEDURE dbo.SP_RESTORE_DB_FROM_BACKUP_FILE
@RepertoireSauvegarde    AS VarChar(8000) 

AS 

-- Déclaration des Variables 
Declare @counter int
Declare @Maxbd int
Declare @dbname sysname
DECLARE @bd sysname 
Declare @Req varchar(8000) 
Declare @cmd NVARCHAR(500) 

SET @cmd = 'dir /b '+@RepertoireSauvegarde+' | sed -e "s/.BAK//" ' 
     
-- creation d'une table temporaire contenant la liste des fichier BAK
CREATE TABLE #dbname(line varchar(2000))
INSERT INTO #dbname
     EXEC xp_cmdshell @cmd
	 --SELECT line FROM #dbname WHERE line IS NOT NULL ORDER BY 1

Set @Maxbd = (Select count(*) FROM #dbname)
Set @counter = 1


-- Preparation du Cursor pour la boucle
DECLARE TESTCURSEUR CURSOR 
	FOR SELECT line FROM #dbname WHERE line IS NOT NULL ORDER BY 1

OPEN TESTCURSEUR
FETCH NEXT FROM TESTCURSEUR INTO @bd

WHILE @counter <= @Maxbd 
BEGIN
	SET @Req  = 'RESTORE DATABASE ['+@bd+'] FROM  DISK = N'''+@RepertoireSauvegarde+'\'+@bd+'.BAK'' WITH REPLACE'
	PRINT  'Commande '+CAST(@counter AS VARCHAR)+' : '+@Req
	PRINT  'Execute Requete'
	EXECUTE (@Req) 
	FETCH NEXT FROM TESTCURSEUR INTO @bd
	SET @counter = @counter +1
END
-- Fermeture du Curseur 
CLOSE TESTCURSEUR 

-- Libération de la mémoire prise par le Curseur 
DEALLOCATE TESTCURSEUR 

GO

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>