mardi 17 janvier 2012

Création Snapshot avec nommage dynamique

J’avais besoin de créer des snapshots de base de données à chaque intervalle pour l’historisation.

Il était nécessaire de retrouver la date sur le nom de chaque snapshot.
Le nom devait être sous forme [NomSnapshot]_AAAAMMDD.
J’ai utilisé la fonction Transact-SQL CONVERT pour  convertir la date du jour (la date de création de snapshot)  à une chaîne de caractère du format AAAAMMDD.
J'ai utilisé le script ci-dessous dans un travail SQL Server planifié sur un intervalle défini. 
use master;
declare @nomSnapshot varchar(50);
declare @cmdSuppression nvarchar(225);
declare @cmdCreation nvarchar(225);
set @nomSnapshot='[NomSnapshot]_'+ convert(varchar,getdate() ,112);
--Etape 1 Suppression de snapshot
SET @ cmdSuppression = 'if DB_ID(''' + @nomSnapshot + ''') IS NOT NULL drop database ' + @nomSnapshot;
 --Etape 2 Création de snapshot
SET @ cmdCreation = 'Create database ' + @nomSnapshot +
' ON (NAME = [NomLogiqueFichierDonnees],
FILENAME = ''[CheminRepertoire]\' + @nomSnapshot + '.ds'')
as SNAPSHOT of [NomBD];
--print @ cmdSuppression;
Execute sp_executeSql @ cmdSuppression;
--print @ cmdCreation;
Execute sp_executeSql @ cmdCreation;


Aucun commentaire: