Vue d'ensemble (objets SMO)

Les objets SMO (SQL Server Management Objects) sont conçus pour la gestion par programme de MicrosoftSQL Server. Vous pouvez les utiliser pour créer des applications de gestion SQL Server personnalisées. Même si SQL Server Management Studio est une application puissante et étendue de gestion de SQL Server, une application SMO donnera dans certains cas de meilleurs résultats.

Par exemple, il est possible que les applications utilisateur qui contrôlent les tâches de gestion de SQL Server doivent être simplifiées pour répondre aux besoins de nouveaux utilisateurs et pour réduire les coûts de formation. Vous devez peut-être créer des bases de données SQL Server personnalisées ou créer une application de création et de contrôle du rendement des index. Une application SMO peut également être utilisée pour inclure de façon transparente le matériel ou les logiciels tiers dans l'application de gestion de base de données.

Le modèle objet SMO étend et remplace le modèle objet DMO (SQL-Distributed Management Objects). Comparé à SQL-DMO, SMO améliore les performances, permet un meilleur contrôle et facilite l'utilisation. La plupart des fonctionnalités du modèle objet SQL-DMO sont incluses dans SMO. De nouvelles classes ont par ailleurs été ajoutées pour prendre en charge de nouvelles fonctionnalités dans SQL Server. Le modèle objet est intuitif et utilise autant que possible la terminologie SQL-DMO pour faciliter le basculement de vos compétences.

Dans la mesure où SMO est compatible avec SQL Server 2000, SQL Server 2005 et SQL Server 2008, il vous est facile de gérer un environnement multiversion.

Important

SMO ne prend pas en charge le niveau de compatibilité 60, 65 ou 70. Si vous utilisez SMO avec une base de données dont le niveau de compatibilité est défini sur 60, 65 ou 70, la base de données ne peut pas être gérée au moyen de SMO.

Nouvelles fonctionnalités de SMO :

  • Modèle objet mis en cache et création d'instance d'objet optimisée. Les objets sont chargés uniquement lorsqu'ils sont spécifiquement référencés. Les propriétés de l'objet ne sont que partiellement chargées à la création de l'objet. Les objets et propriétés restants sont chargées lorsqu'ils sont directement référencés.

  • Exécution groupée des instructions Transact-SQL. Les instructions sont groupées pour améliorer les performances réseau.

  • Capture des instructions Transact-SQL. Autorise la capture de toute opération dans un script. Management Studio utilise cette fonctionnalité pour écrire une opération au lieu de l'exécuter immédiatement.

  • Gestion des services SQL Server avec le fournisseur WMI. Les services SQL Server peuvent être démarrés, arrêtés et suspendus par programme.

  • Écriture de scripts avancés. Des scripts Transact-SQL peuvent être générés pour recréer des objets SQL Server qui décrivent des relations à d'autres objets sur l'instance de SQL Server.

  • Utilisation de noms de ressource uniques (URN). Un URN vous permet de créer des instances d'objets SMO et de les référencer.

SMO représente également de nombreux composants et fonctionnalités introduits dans SQL Server 2005 sous la forme de nouveaux objets ou propriétés. Ces nouveaux composants et fonctionnalités sont les suivants :

L'espace de noms SMO est Microsoft.SqlServer.Management.Smo. SMO est implémenté en tant qu'assembly Microsoft .NET Framework. Cela signifie que le CLR (Common Language Runtime) du Microsoft.NET Framework version 2.0 doit être installé avant d'utiliser les objets SMO. Les assembly SMO sont installés par défaut dans le Global Assembly Cache (GAC) avec l'option de Kit de développement logiciel (SDK) de SQL Server. Les assemblys se trouvent dans C:\Program Files\Microsoft SQL Server\100\SDK\Assemblies\. Pour plus d'informations, consultez la documentation Visual Studio.NET Framework.

Classes SMO

Les classes SMO incluent deux catégories : les classes d'instance et les classes utilitaires.

Classes d'instance

Les classes d'instance représentent des objets SQL Server tels que des serveurs, des bases de données, des tables, des déclencheurs et des procédures stockées. La classe ServerConnection est utilisée pour établir une connexion à l'instance de SQL Server et contrôler le mode de capture des commandes qui lui sont envoyées.

Les objets d'instance SMO forment une hiérarchie qui représente la hiérarchie d'un serveur de base de données. Au sommet de cette hiérarchie se situent les instances de SQL Server, suivies des bases de données, puis des tables, des colonnes, des déclencheurs et ainsi de suite. S'il est logique qu'il existe une relation un-à-plusieurs entre un parent et ses enfants, comme une table constituée d'une ou plusieurs colonnes, il est alors logique que l'enfant soit représenté par une collection d'objets. Sinon, l'enfant est simplement représenté par un objet.

Classes d'utilitaire

Les classes utilitaires représentent un groupe d'objets créés explicitement pour effectuer des tâches spécifiques. Elles ont été divisées en différentes hiérarchies d'objets selon leur fonction :

  • Classe de transfert. Utilisée pour transférer un schéma et des données vers une autre base de données.

  • Classes de sauvegarde et de restauration. Utilisées pour sauvegarder et restaurer des bases de données.

  • Classe de générateur de script. Utilisée pour créer des fichiers de script pour la régénération des objets et de leurs dépendances.

Nouvelles fonctionnalités de SMO

Optimisation des performances

Dans SQL-DMO, l'énumération d'objets exigeait que chaque objet d'une collection soit entièrement instancié. Ceci est inefficace en termes d'encombrement réseau et mémoire. Un objet peut souvent être instancié sans que la plupart de ses proprités ne soient explicitement référencées.

L'architecture SMO est plus efficace en termes de mémoire car les objets ne sont instanciés que partiellement dans un premier temps et que des informations de propriété minimales sont demandées au serveur. L'instanciation complète des objets est différée jusqu'à ce que l'objet soit explicitement référencé. Un objet est entièrement instancié lorsqu'une propriété demandée ne figure pas dans le jeu de propriétés extrait en premier ou lorsqu'une méthode nécessitant cette propriété est appelée. La transition entre les objets partiellement instanciés et les objets entièrement instanciés est transparente pour l'utilisateur. En outre, certaines propriétés qui utilisent beaucoup de mémoire ne sont jamais récupérées, à moins que la propriété soit explicitement référencée. Ceci est illustré par la propriété Size de la propriété d'objet Database. Toutefois, l'instanciation partielle requiert davantage d'allers-retours sur le réseau et ne constitue peut-être pas la meilleure option pour votre application.

Vous pouvez contrôler l'instanciation en fonction de l'environnement système. L'instanciation différée réduit la quantité de mémoire requise par l'application, bien que cela puisse déclencher de nombreuses demandes serveur lorsque les propriétés sont référencées.

Des classes d'instance, des objets qui représentent des objets de base de données réels, peuvent exister dans trois niveaux d'instanciation. instanciation minimale (seules les propriétés requises minimales sont lues dans un bloc), instanciation partielle (toutes les propriétés qui utilisent une quantité de mémoire relativement grande sont lues dans un bloc) et instanciation complète. Les états non instancié et instanciation complète sont les plus courants. L'état d'instanciation partielle accroît l'efficacité car un objet partiellement instancé ne contient pas de valeurs pour le jeu complet de propriétés de l'objet. L'instanciation partielle est l'état par défaut d'un objet qui n'est pas directement référencé. Lorsque l'une de ces propriétés est référencée, une erreur est générée qui invite à l'instanciation complète de l'objet.

Exécution par capture

L'exécution directe est la méthode habituelle d'exécution. Les instructions sont envoyées à une instance de SQL Server dès qu'elles sont soumises. L'exécution par capture est une autre possibilité d'exécution.

L'exécution par capture vous permet de capturer des lots Transact-SQL qui devraient être exécutés. Le programmeur SMO peut ainsi différer le script, le stocker en vue de l'exécuter ultérieurement ou fournir un aperçu à l'utilisateur final. Par exemple, les instructions create database, create table et create index peuvent être envoyées dans un lot, puis être exécutées en trois étapes séquentielles. Cette fonctionnalité est contrôlée par l'utilisateur à l'aide de l'objet Server.

Fournisseur WMI

Les objets du fournisseur WMI sont encapsulés par SMO. Le programmeur SMO dispose ainsi d'un modèle objet simple fort similaire aux classes SMO, sans qu'il ait besoin de comprendre le modèle de programmation représenté par l'espace de noms et les détails du fournisseur WMI de SQL Server. Le fournisseur WMI vous permet de configurer les services SQL Server, les alias, de même que les bibliothèques réseau client et serveur.

Création de scripts

Dans SMO, la création de scripts a été améliorée et déplacée dans la classe Scripter. La classe Scripter peut découvrir les dépendances, comprendre les relations entre des objets et permettre la manipulation de la hiérarchie de dépendances. Le principal objet de script est l'objet Scripter. Il existe également plusieurs objets de support qui gèrent les dépendances et répondent aux événements de progression et d'erreur.

L'objet Scripter prend en charge les options de script avancées suivantes :

  • Script simple en 1 phase (crée le script en une étape)

  • Script avancé en 3 phases (crée le script en trois étapes : découverte des dépendances, génération de la liste, génération du script)

  • Découverte de dépendances bidirectionnelle (permet la découverte des dépendances ou des dépendants)

  • Réponse aux événements de progression

  • Réponse aux événements d'erreur

Noms de ressource uniques

Un concept clé dans l'utilisation de la bibliothèque d'objets SMO est le nom de ressource unique (URN). L'URN utilise une syntaxe semblable à XPath. XPath est un chemin d'accès hiérarchique utilisé pour spécifier un objet dans lequel chaque niveau a des qualificateurs et des fonctions. Dans SMO, l'URN a deux éléments, le chemin d'accès et le nom d'attribut qui a des fonctionnalités limitées. Le chemin d'accès est utilisé pour spécifier l'emplacement de l'objet, tandis que le nom d'attribut permet un certain degré de filtrage.

Exemple d'URN pour une base de données :

/Server/Database[@Name='Adventureworks']

L'URN d'un objet peut être récupéré en référençant sa propriété URN. L'objet Scripter utilise également des URN comme paramètres qui passent des références d'objet à la méthode de l'objet Scripter. En outre, un URN peut être spécifié pour la méthode GetSmoObject(Urn) de l'objet Server. Cela permet de créer une instance de l'objet SMO.

Nouvelles fonctionnalités SQL Server représentées dans SMO

Partitionnement des tables et des index

Le partitionnement des tables et des index vous permet de gérer les données dispersées dans des tables et des index de groupes de fichiers. Cette nouvelle fonctionnalité est représentée par les objets SMO.

Points de terminaison

Les demandes SOAP et les demandes de mise en miroir de base de données sont gérées par des points de terminaison à l'aide de l'objet Endpoint.

Isolation de capture instantanée/Versioning de ligne

L'isolation de capture instantanée (versioning de ligne) est représentée par les nouvelles propriétés de l'objet Database.

Espace de noms de schéma XML, index XML et type de données XML

Les expaces de noms de schéma XML sont représentés dans SMO par une collection d'objets. Les index XML sont représentés dans SMO par une propriété d'objet Index.

Améliorations apportées à la recherche en texte intégral

De nouveaux objets sont fournis dans SMO pour représenter les améliorations apportées à la recherche en texte intégral.

Vérification de page

L'objet PageVerify représente les options de vérification de page de bases de données.

Bases de données de captures instantanées

Une base de données de captures instantanées est une copie en lecture seule d'une base de données spécifiée à un point spécifique dans le temps. Une base de données de captures instannées peut être spécifiée à l'aide de la propriété IsDatabaseSnapshot de l'objet Database.

Service Broker

Service Broker et ses fonctionnalités sont représentés par un groupe d'objets

Améliorations des index

Les améliorations des index SQL Server sont représentées par de nouvelles propriétés dans l'objet Index.

SMO et SQL-DMO.

Le modèle objet SMO remplace SQL-DMO. SMO prend en charge SQL Server 2000, SQL Server 2005 et SQL Server 2008. Il prend en charge davantage de tâches de gestion SQL Server et contient de nombreuses nouvelles fonctionnalités dans SQL Server. SMO est conçu pour être plus efficace et offrir davantage de contrôle.

La bibliothèque DMO est un modèle objet COM, alors que SMO est implémenté en tant qu'assembly .NET Framework. Les composants COM sont des bibliothèques qui fournissent des fonctionnalités réutilisables aux applications et dans la programmation d'applications non managées. Les assemblys .NET Framework fournissent des fonctionnalités réutilisables pour le .NET Framework pour écrire des applications de code managé.

Pendant la transition vers la technologie .NET Framework, il est possible d'avoir des applications écrites partiellement en code managé et partiellement en code non managé. Le .NET Framework vous permet de créer une interface avec les composants COM, ce qui requiert un assembly PIA (Primary Interop Assembly). Un wrapper d'exécution est requis pour SQL-DMO afin qu'il puisse être appelé à partir d'une application .NET Framework.