SMO (SQL Management Object) Sample #1 : Balade dans les API / Connexion et récupérer la liste des bases

Publié le par Renaud Harduin

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         }

Publié dans SMO

Pour être informé des derniers articles, inscrivez vous :
Commenter cet article