Introduction à SQL-DMO
Microsoft SQL Server est actuellement un système de gestion de base de données populaire. Avec l'amélioration continue et le développement de SQL Server et la combinaison parfaite avec les propres systèmes d'exploitation de Microsoft Windows Series, il offre de meilleures performances et facilité d'utilisation sur la plate-forme Windows, de sorte qu'elle est de plus en plus appréciée. Le nom complet de SQL-DMO est des objets de gestion distribués SQL. Il s'agit d'une collection contenant un ensemble de COM avec deux interfaces. Grâce à SQL-DMO, nous pouvons contrôler le moteur de la base de données et la gestion de la réplication qui fonctionne SQL Server. Étant donné que SQL-DMO est un ensemble de COM, il peut être utilisé par n'importe quel outil de développement qui peut utiliser COM, y compris VB, Delphi, VC, BCB, ASP, etc., presque tous les outils de développement sous la plate-forme Windows.
SQL-DMO utilise
Pourquoi devons-nous utiliser SQL-DMO pour gérer les bases de données? Ne nous suffit-il pas pour gérer la base de données à l'aide des scripts Enterprise Manager et T-SQL? SQL-DMO peut effectuer des activités de gestion de base de données flexibles, personnalisables et efficaces. Étant donné que SQL-DMO fournit une interface de gestion pour SQL Server, via la programmation, vous pouvez personnaliser les activités de gestion en fonction de vos besoins. Par exemple, si nous gérons une grande organisation avec de nombreuses instances SQL Server. Vous devez maintenant ajouter un utilisateur à toutes les instances SQL Server dans votre organisation. Vous utilisez la programmation SQL-DMO pour implémenter les appels, il peut être achevé facilement et efficacement avec un cycle. De l'avis de l'auteur, ce qui est plus important, c'est que MSDE peut être géré à l'aide de SQL-DMO. MS SQL Server est cher, tandis que MSDE est gratuit. Dans certaines petites et moyennes applications, MSDE est suffisant. Cependant, comme MSDE ne fournit qu'un moteur de base de données mais ne fournit pas d'interface de gestion visuelle, il est impossible de gérer régulièrement les bases de données dans MSDE, ce qui limite la portée de l'application de MSDE. Pour le moment, si nous utilisons SQL-DMO, nous pouvons fournir notre propre interface de gestion de base de données, afin que nous puissions effectuer une certaine gestion régulière de la base de données dans MSDE. Si le temps et le coût ne sont pas pris en compte, vous pouvez créer une interface de gestion similaire à celle d'Enterprise Manager. En fait, la plupart des fonctions d'Enterprise Manager sont également implémentées en utilisant SQL-DMO. (SQL-NS est utilisé (SQL-Namespace, qui est également une collection d'objets COM, donnant accès à l'espace de nom d'objet dans SQL Server), mais SQL-NS lui-même est également construit sur SQL-DMO)
Hôte et composition SQL-DMO
L'hôte de SQL-DMO est SQLDMO.dll, situé sous X: / Program Files / Microsoft SQL Server / 80 / Tools / Binn. En outre, il nécessite également les fichiers suivants: l
Sqldmo.dll ( bibliothèque de types principaux) l
Sqldmo.rll ( fichier de ressource linguistique) l
Sqlsvc.dll ( Type Library for Database Management) l
Sqlsvc.rll ( fichier de ressource linguistique) l
Sqlunirl .Dll ( couche de redirection Unicode) l
sqlrsld.dll ( pour le chargement des ressources) L
ODBC ( y compris ODBC32.DLL, SQLSRV32.DLL, ODBCBCP.DLL , etc.) Voici une explication de la structure d'appel (figure 1):
| Notre application crée des objets à l'aide de SQL-DMO ici |
Figure 1 structure d'appel SQL-DMO
Arbre d'objet SQL-DMO
Regardons d'abord l'arbre d'objets énormes et complexes de SQL-DMO (voir figure 3): l'objet SQLServer est l'épine dorsale de cet arbre d'objet, et il y a trois branches principales sous cette branche de la base de données: L Branche de base de données et une série d'implémentations d'objets Sous les tâches d'architecture de base de données et de maintenance dans SQLServer. l Branche de Joberver, une série d'objets sous l'informatique implémente le service d'agent SQL Server (Agent). l Branche de réplication, une série d'objets sous l'informatique implémente le service de réplication de SQL Server. Il y a aussi des choses à noter: l L'arbre d'objet ne répertorie pas l'objet d'application, mais il s'agit en fait d'un objet relativement important. Tout objet SQL-DMO a une propriété pointant vers l'objet d'application. L'objet d'application représente une application globale, qui contient deux objets de collecte: les serveurs et les groupes de serveurs. Comme le montre la figure 2: Figure 2 Objet d'application L Arborescence d'objet ne représente que la structure de SQL-DMO et ne répertorie pas tous les objets, tels que l'objet Namelist, l'objet ServerGroup, etc. L'arbre d'objet SQL-DMO a une structure complexe et de nombreux objets. Figure 3 arbre d'objet SQL-DMO
Implémentation de Delphi encapsulé SQL-DMO
Ce qui suit est une description du composant TDBCTRL pour l'encapsulation SQL-DMO implémentée par l'auteur à l'aide de Delphi. Parce que j'avais besoin d'un moteur de base de données gratuit dans un certain projet, j'ai finalement choisi MSDE, mais MSDE n'a pas d'interface de gestion, c'est juste un moteur. Par conséquent, il est nécessaire de fournir une interface de gestion simple et claire pour MSDE. Nous n'avons pas besoin de fournir autant de fonctions de gestion que Enterprise Manager, nous avons juste besoin de fournir les fonctions les plus couramment utilisées. Compte tenu de la facilité d'utilisation et de l'évolutivité, il est décidé de le fournir sous forme de composants. Les composants implémentés fournissent une couche d'emballage pour SQL-DMO, encapsulant certaines fonctions couramment utilisées et simplifiant l'utilisation. Notez que la compilation de ce composant nécessite l'introduction de la bibliothèque de types SQL-DMO et la génération de code de description correspondant. Le code contient de nombreux utilisations régulières de Delphi et notation idiomatique des objets com. Je ne discuterai pas de la façon dont Delphi utilise le com ici, les lecteurs peuvent se référer à des livres connexes. Ce composant contient les propriétés suivantes: propriété Host: String Read Fhost Write FHOST; // Nom d'hôte, c'est-à-dire le nom d'instance SQL Server à connecter la propriété Mot de passe: String Read FPWD Write FPWD; Ogin: String Read Flogin Write Flogin; Un membre de données privé: SQLServer à enregistrer. Son type est _SqlServr. Le constructeur doit se connecter pour créer un objet SQLServer. Le destructeur est également juste pour terminer la destruction de l'objet SQLServer. Constructeur tdbctrl.create (aowner: tcomponent); Après cela, Delphi terminera la destruction des objets com dans les coulisses. Hérité; fin; si nous voulons gérer et utiliser une certaine instance SQL Server, nous devons d'abord nous connecter à cette instance. La fonction ConnectToServer suivante implémente la fonction de la connexion à une instance SQL Server. fonction tdbctrl.connecttoServer: boolean; begin sqlServer.loginSecure: = floginsecure; // Définissez le mode de vérification NT, s'il est vrai, la connexion et le mot de passe seront ignorés; Résultat: TRUE; sauf sur E: Eoleexception commence à se présenter (E.Message); Selon l'autorisation connectée à l'utilisateur). Certaines des méthodes répertoriées ci-dessous montrent certaines fonctionnalités. La méthode GetTableList obtient tous les noms de table d'une base de données et les renvoie dans une liste TString. fonction tdbctrl.getTableList (dbname: string; var tablelist: tStringList): booléen; var nowdb: _database; .Databases.Item (dbname, sqlServer); // obtenez un objet de base de données basé sur le nom de la base de données pour i: = 1 vers Nowdb.tables.Count Do Begin NowTable: = Nowdb.Tables.Item (i, 0); D (NowTable .Name); Toutes les vues dans la base de données (vues), tous les champs d'une table ou d'une vue (colonnes), de tous les groupes de fichiers de données d'une base de données et des fichiers de données (groupes de fichiers, DBFiles), etc. SQL-DMO. L'utilisation d'objets SQL-DMO peut suivre les étapes de base suivantes: Obtenez un objet ou un objet de collecte via l'objet de couche supérieure, puis utilisez l'objet ou obtenez un objet dans l'objet de collection avant utilisation. D'une manière générale, s'il s'agit d'un objet de collection, il existe une méthode d'élément et l'objet membre de la collection peut être renvoyé en fonction de l'index ou du nom. Il convient de noter que l'index commence à 1 au lieu de 0. Les méthodes ci-dessus sont toutes démontrées comment obtenir des informations à partir de la base de données. Cette méthode montre comment maintenir la base de données. fonction tdbctrl.backupdb (dbname, backupfile: string): boolean; // les paramètres passants sont le nom de base de données à sauvegarder et le nom de fichier de sauvegarde var dmoback: _backup; L'objet de périphérique Begin // Définit le périphérique de sauvegarde, essayez de DeleteFile (BackupFile); = Dbname + 'bak'; Ici, ne renvoie pas la valeur, il n'y a aucun moyen, vous pouvez simplement penser que l'exception est ajoutée car la fin de secours existe déjà; = Dbname + 'bak'; nil; e nd; fin; De plus, je veux donner un exemple expliquer comment utiliser l'objet d'application mentionné au début. Cette méthode consiste à obtenir les noms de toutes les instances SQL Server disponibles (accessibles et connectables). fonction tdbctrl.getServerList (var serverlist: tStringList): boolean; application var: _Application; ; Fin de l'objet; fin; bien sûr, il existe de nombreuses méthodes pour le composant TDBCTRL, mais la mise en œuvre du code est similaire, comme la méthode de récupération correspondant à la sauvegarde et la méthode de déconnexion correspondant à la connexion. . Les lecteurs peuvent se référer à l'exemple de code et au livre en ligne de SQL Server pour apprendre à partir d'un exemple et implémenter les fonctions qu'ils souhaitent. Si vous avez besoin de tout le code pour ce composant, vous pouvez me le demander.
Autres instructions
La version 2000 de SQL-DMO est entièrement compatible avec SQL Server7.0 et SQL Server 2000. Cependant, plus de 80 nouvelles interfaces sont fournies pour prendre en charge les nouvelles fonctionnalités de SQL Server 2000. Ces nouvelles interfaces se terminent toutes par "2", qui sont des superset de ces interfaces dans le SQL Server 7.0 d'origine. C'est-à-dire que si vous souhaitez utiliser les nouvelles fonctionnalités de SQL Server 2000, vous devez utiliser l'interface avec "2" à la fin.
bibliographie
L Microsoft MSDNL Microsoft SQL Server en ligne Bookl "Delphi Com Programming In-Depth" (US) Eric Harmon Machinery Industry Press