> Tech > SMO : Sql Management Objects

SMO : Sql Management Objects

Tech - Par Renaud ROSSET - Publié le 24 juin 2010
email

SMO représente une collection complète d’objets managés (donc .Net) permettant d’administrer directement depuis un programme tiers un serveur SQL SERVER. L’avantage de SMO, par rapport à la méthode ADO.NET, réside dans l’encapsulation quasi complète de tous les scripts SQL dans des objets et méthodes .NET, nous

SMO : Sql Management Objects

abstrayant des connaissances du langage SQL.

Attention, l’ensemble des objets SMO vont tout de même effectuer cette opération de génération de scripts SQL, il n’en reste pas moins que le script SQL reste la seule façon de communiquer avec un Serveur SQL SERVER 2008. Compatibilité de SMO SMO vient prendre la succession de DMO, ancien modèle objets. SMO arrive depuis la version 2005 de SQL SERVER, mais il permet tout de même d’administrer via sa collection d’objets des serveurs SQL SERVER 7.0, 2000, 2005 et bien sûr 2008.

Attention toute fois, inutile d’essayer des fonctionnalités existantes dans SQL SERVER 2008 sur un serveur SQL SERVER 2005 ! Transposition de notre projet .NET Nous reprenons le même exemple que précédemment. L’interface graphique ne bouge plus, seule la façon de faire le backup change. Tout d’abord, avant de commencer à modifier notre code, il est nécessaire de rajouter à notre projet l’ensemble des références aux assemblies .NET de SMO.

Elles sont au nombre de 5 :

  1. Microsoft.SqlServer.Connec – tionInfo
  2. Microsoft.SqlServer.Management .Sdk.Sfc
  3. Microsoft.SqlServer.Smo
  4. Microsoft.SqlServer.SmoExten ded
  5. Microsoft.SqlServer.SqlEnum Voir Figure 7.

SMO permet de facilement se connecter à un quelconque SERVER, via son nom ou tout simplement une chaîne de connexion et nous expose dans l’espace de nom Microsoft. SqlServer.Manage ment.Smo un premier objet .NET :

Server Server CurrentServer = new Server(@"local\sql2008");

Un objet SMO Server contient une collection de bases de données, que nous pouvons facilement parcourir et ainsi récupérer la base de données sur laquelle nous voulons effectuer une sauvegarde sous la forme d’un deuxième objet .NET :

Database: Database CurrentDatabase = CurrentServer.Databases ["PerfSamples"]; Il ne reste plus qu’à migrer notre code en utilisant l’encapsulation fournie par SMO et un troisième objet .NET : Backup: Voir listing 4.

Le reste du code restant semblablement identique au précédent exemple SMO permet bien d’encapsuler tous les appels au serveur SQL SERVER, sans avoir à se soucier du langage SQL. Il représente l’ensemble de tous les objets et commandes disponibles dans SQL SERVER. Il permet de créer une application entière dédiée à l’administration de SQL SERVER.

Nous en voulons pour preuve de son efficacité une application .NET qui permet d’administrer un serveur SQL SERVER via SMO : La console d’administration SQL SERVER ! Celle-ci même que nous présentions précédemment. Et bien sachez tout d’abord que cette application a été développée en .NET d’une part et que d’autre part elle appelle directement l’ensemble des méthodes et objets fournis par SMO.

La génération d’un backup différentiel est interdite tant qu’un backup complet n’existe pas. Le message d’erreur renvoyé par la console de gestion de SQL SERVER nous prouve bien l’appel de SMO : Voir Figure 8. 

Téléchargez cette ressource

Les mégatendances cybersécurité et cyber protection 2024

Les mégatendances cybersécurité et cyber protection 2024

L'évolution du paysage des menaces et les conséquences sur votre infrastructure, vos outils de contrôles de sécurité IT existants. EPP, XDR, EDR, IA, découvrez la synthèse des conseils et recommandations à appliquer dans votre organisation.

Tech - Par Renaud ROSSET - Publié le 24 juin 2010