Business Intelligence Blog

Welcome on Business Intelligence Blog !!!

This blog is dedicated to Business Intelligence technologies under SAS9 and SQL Server 2005.

Calendrier

Novembre 2009
L M M J V S D
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            
<< < > >>

MVP Blog

Recommander

W3C

  • Flux RSS des articles
Dimanche 22 mars 2009
Je vais vous proposer une série de sample afin d'illuster l'utilisation de SMO (SQL Server Management Object) dans le cadre d'un système de sauvegarde de données de base à base, en suivant l'arbre des dépendances (techniques ou fonctionelles) du modèle physique.

J'aurais pu faire un simple package SSIS à cet effet, mais dans la pratique les modèles de donnée changent régulièrement, donc SSIS s'adapate mal car cela supposera de maintenir les métadonnées :(
Il s'agit donc de créer dynamiquement ces packages, tout un programme...
Le code source du projet est sur www.codeplex.com/bilab sous $/POC/BILABHistory/
Dans ce projet, je m'appuie sur une classe clef "TablePath". Elle embarquera toute la logique.

SMO est une API qui permet de se balader dans un SQL Server. Pour se connecter, il faudra passer par la classe Server :

sqlserver =

new Server(sc);


Commençons par du basique : afin de récupérer l'arbre des dépendances, je vous propose déjà de se connecter et de récupérer la liste des bases existantes dans l'instance concernée. C'est que fait la méthode GetDatabaseList :

   27         public List<string> GetDatabaseList(string server, ServerAuthMode mode, string user, string password)

   28         {

   29             List<string> dblist = new List<string>();          

   30             ServerConnection sc = null;

   31             Server sqlserver;

   32 

   33             log.Info("connecting");

   34 

   35 

   36             // Sets appropriate connections proerties accordign db context

   37             if (mode == ServerAuthMode.SqlServer)

   38             {

   39                 sc = new ServerConnection(server, user, password);

   40             }

   41             else if (mode == ServerAuthMode.Integrated)

   42             {

   43                 sc = new ServerConnection(server);

   44             }

   45 

   46 

   47             try

   48             {

   49                 sqlserver = new Server(sc);

   50                 log.Info("Creating db list");

   51                 foreach (Database db in sqlserver.Databases)

   52                 {

   53                     log.Info("adding " + db.Name + " to the list ");

   54                     dblist.Add(db.Name);

   55                 }

   56             }

   57             catch (Exception e)

   58             {

   59                 log.Debug("Error obtaining database list connecting : " + e.Message);

   60             }

   61             finally

   62             {

   63                 sc = null;

   64                 _server = null;

   65             }           

   66 

   67             return dblist;

   68         }

Par Renaud Harduin - Publié dans : SMO
Ecrire un commentaire - Voir les commentaires - Recommander
Retour à l'accueil
Créer un blog sur over-blog.com - Contact - C.G.U. - Rémunération en droits d'auteur - Signaler un abus