Partage via


Vue d'ensemble (objets SMO)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics

SQL Server les objets de gestion (SMO) sont des objets conçus pour la gestion par programmation de Microsoft SQL Server. Vous pouvez utiliser SMO pour créer des applications de gestion de SQL Server personnalisées. Bien que SQL Server Management Studio soit une application puissante et étendue pour la gestion des SQL Server, il peut arriver que vous soyez mieux servi par une application SMO.

Par exemple, les applications utilisateur qui contrôlent les tâches de gestion SQL Server peuvent devoir être simplifiées pour répondre aux besoins des nouveaux utilisateurs et réduire les coûts de formation. Vous devrez peut-être créer des bases de données SQL Server personnalisées ou créer une application pour créer et surveiller l’efficacité 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.

Étant donné que SMO est compatible avec SQL Server 2005 (9.x) et versions ultérieures, vous pouvez facilement gérer un environnement multi-version.

Les fonctionnalités de SMO sont les suivantes :

  • Modèle objet mis en cache et création d'instance d'objet optimisée. Les objets sont chargés uniquement lorsqu’ils sont 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 par lots d’instructions Transact-SQL. Les instructions sont groupées pour améliorer les performances réseau.

  • Capturez les instructions Transact-SQL. Autorise la capture de toute opération dans un script. Management Studio utilise cette fonctionnalité pour scripter une opération au lieu de l’exécuter immédiatement.

  • Gestion des services SQL Server avec le fournisseur WMI. SQL Server services 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 avec 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 en tant que nouveaux objets ou propriétés de nombreuses fonctionnalités et composants introduits dans SQL Server 2005 (9.x). Ces nouveaux composants et fonctionnalités sont les suivants :

  • Partitionnement d'index et de table pour le stockage des données sur un schéma de partition. Pour plus d’informations, consultez Tables et index partitionnés.

  • Points de terminaison HTTP pour la gestions des requêtes SOAP. Pour plus d'informations, consultez Implementing Endpoints.

  • Isolement d'instantané et contrôle de version de ligne pour plus de concurrence. Pour plus d’informations, consultez Utilisation du niveau d’isolement d’instantané.

  • La collection de schémas XML, les index XML et le type de données XML fournissent la validation et le stockage des données XML. Pour plus d’informations, consultez Collections de schémas XML (SQL Server) et Utilisation de schémas XML.

  • Bases de données d'instantanés pour la création de copies en lecture seule de bases de données.

  • Prise en charge de Service Broker pour la communication basée sur les messages. Pour plus d'informations, consultez SQL Server Service Broker.

  • Prise en charge des synonymes pour plusieurs noms d’objets de base de données SQL Server. Pour plus d’informations, consultez Synonymes (moteur de base de données).

  • La gestion de Database Mail qui vous permet de créer des serveurs de messagerie, des profils de messagerie et des comptes de messagerie dans SQL Server. Pour plus d’informations, consultez Messagerie de base de données.

  • Prise en charge des serveurs inscrits pour l'inscription des informations de connexion. Pour plus d'informations, consultez Register Servers.

  • Suivi et relecture des événements SQL Server. Pour plus d'informations, consultez SQL Server Profiler, SQL Trace, SQL Server Distributed Replayet Extended Events.

  • Prise en charge des certificats et des clés pour le contrôle de sécurité. Pour plus d'informations, consultez Encryption Hierarchy.

  • Déclencheurs DDL pour l'ajout de fonctionnalités lorsque des événements DDL se produisent. Pour plus d'informations, consultez DDL Triggers.

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 Common Language Runtime de Microsoft .NET Framework version 2.0 doit être installé avant d’utiliser les objets SMO. Les assemblys SMO sont installés par défaut dans global Assembly Cache (GAC) avec l’option sdk SQL Server. Les assemblys se trouvent dans C:\Program Files\Microsoft SQL Server\130\SDK\Assemblys. Pour plus d’informations, consultez la documentation de 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 SQL Server objets tels que les serveurs, les bases de données, les tables, les déclencheurs et les procédures stockées. La ServerConnection classe 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. En haut se trouvent les instances de SQL Server, sous lesquelles se trouvent les bases de données, et qui suivent avec des tables, des colonnes, des déclencheurs, etc. 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 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.

Fonctionnalités SMO

Performances optimisées

L’architecture SMO est efficace en termes de mémoire, car les objets ne sont instanciés qu’en partie au début et qu’un minimum d’informations sur les propriétés est demandé 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 traditionnels d’instanciation sans fondement et entièrement instanciés sont les états traditionnels de l’instanciation. 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 directement au fur et à mesure qu’elles sont engagées. L'exécution par capture est une autre possibilité d'exécution.

L’exécution de capture vous permet de capturer des lots Transact-SQL qui seraient généralement 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 tableet 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. Cela fournit au programmeur SMO un modèle objet simple similaire aux classes SMO, sans avoir à comprendre le modèle de programmation représenté par l’espace de noms et les détails du fournisseur WMI SQL Server. Le fournisseur WMI vous permet de configurer SQL Server services, les alias et 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 de dépendances, génération de liste, génération de 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 ressources 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='AdventureWorks2022']  

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 de l'objet Server . Cela permet de créer une instance de l'objet SMO.

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

Partitionnement de table et d’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.

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.

Isolement d'instantané/Contrôle de version de ligne

L'isolement d'instantané (contrôle de version de ligne) est représenté 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 d'instantanés

Une base de données d'instantanés 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 d'instantanés 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

SQL Server améliorations de l’index sont représentées par les nouvelles propriétés de l’objet Index .

Voir aussi

Concepts liés à Replication Management Objects