Copie régulière d’une base vers une autre

Voici un petit script qui réalise la copie d’une base vers une autre. Par exemple pour avoir régulièrement une base de reporting ou de développement afin d’éviter de travailler sur la base de production…

Soit B1 la base source et B2 la base cible de la copie. Le script suivant réalise une copie par sauvegarde. Notez que la sauvegarde s’effectue dans un répertoire de nom « C:\SAUVERGARDES_DB_SQL\ » que vous pouvez bien entendu changez au gré de vos nécessités.

DECLARE @SQL VARCHAR(8000);
 
SET @SQL = 'RESTORE DATABASE ' + @DB_SOURCE  
+ ' FROM DISK = ''C:\SAUVERGARDES_DB_SQL\MaSauvegardeB1.BAK'''
+ ' WITH REPLACE, ';
 
SELECT @SQL = @SQL + ' MOVE ''' + RTRIM(name) +''' TO '''  
+ SUBSTRING(filename, 1, LEN(filename) - 4) + '_copy'  
+ SUBSTRING(filename, LEN(filename) - 3, 4) +''', '
FROM   B1.dbo.sysfiles;
 
BACKUP DATABASE B1 TO DISK = 'C:\SAUVERGARDES_DB_SQL\MaSauvegardeB1.BAK'
WITH INIT, FORMAT;
 
SET @SQL = SUBSTRING(@SQL, 1, LEN(@SQL) -1);
 
EXEC (@SQL);

Rien ne vous empêche de planifier un tel job !

***
Frédéric BROUARD – SQLpro – MVP SQL Server
Spécialiste SQL/BD modélisation de données
SQL & SGBDR http://sqlpro.developpez.com/
Expert SQL Server : http://www.sqlspot.com
audits – optimisation – tuning – formation

Laisser un commentaire