Vue d’ensemble (SMO)
S’applique à : SQL ServerAzure SQL Database Azure SQL Managed Instance Azure Synapse Analytics
Les objets SMO (SQL Server Management Objects) sont des objets conçus pour la gestion programmatique de Microsoft SQL Server. Vous pouvez utiliser SMO pour générer des applications de gestion SQL Server personnalisées. Bien que SQL Server Management Studio soit une application puissante et étendue pour la gestion de 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 ê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 les versions ultérieures, vous pouvez facilement gérer un environnement multiversion.
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 des 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. Les services SQL Server peuvent être démarrés, arrêtés et suspendus par programmation.
Écriture de scripts avancés. Les scripts Transact-SQL peuvent être générés pour recréer des objets SQL Server qui décrivent les 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 qui ont été 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).
Gestion de la messagerie de base de données 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.
Tracez et relectez les é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 le Global Assembly Cache (GAC) avec l’option du Kit de développement logiciel (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 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 ServerConnection classe est utilisée pour établir une connexion à l’instance de SQL Server et contrôler le mode de capture des commandes envoyées à celui-ci.
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 sont les instances de SQL Server, sous lesquelles sont les bases de données, et en suivant avec 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 représenté par un objet.
Classes utilitaires
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 que partiellement au début, et les informations de propriété minimales sont demandées auprès du 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 et d’instanciation non 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 de capture
L'exécution directe est la méthode habituelle d'exécution. Les instructions sont envoyées à une instance de SQL Server directement à 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 étroitement, 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 les services, alias et bibliothèques réseau client et serveur SQL Server.
Génération de script
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.
Isolation d’instantané/contrôle de version au niveau des lignes
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ées par un groupe d’objets
Améliorations apportées à l’index
Les améliorations apportées à l’index SQL Server sont représentées par de nouvelles propriétés dans l’objet Index .