> 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 abstrayant

SMO : Sql Management Objects

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 : I) Microsoft.SqlServer.Connec – tionInfo II) Microsoft.SqlServer.Management .Sdk.Sfc III) Microsoft.SqlServer.Smo IV) Microsoft.SqlServer.SmoExten ded V) 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.

Une preuve en image : 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

Comment sécuriser une PME avec l’approche par les risques ?

Comment sécuriser une PME avec l’approche par les risques ?

Disposant de moyens financiers et humains contraints, les PME éprouvent des difficultés à mettre en place une véritable stratégie de cybersécurité. Opérateur de services et d’infrastructures, Naitways leur propose une approche pragmatique de sécurité « by design » en priorisant les risques auxquelles elles sont confrontées.

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