Einführung in SQL-DMO
Microsoft SQL Server ist derzeit ein beliebtes Datenbankverwaltungssystem. Mit der kontinuierlichen Verbesserung und Entwicklung des SQL Servers und der perfekten Kombination mit den Betriebssystemen von Microsoft bietet es eine bessere Leistung und Benutzerfreundlichkeit auf der Windows -Plattform, sodass es zunehmend geschätzt wird. Der vollständige Name von SQL-DMO sind SQL Distributed Management-Objekte. Es handelt sich um eine Sammlung, die eine Reihe von COMS mit Dual -Schnittstellen enthält. Über SQL-DMO können wir die Datenbank-Engine und die Replikationsverwaltung steuern, die SQL Server betreibt. Da SQL-DMO ein Satz von COM ist, kann es von jedem Entwicklungswerkzeug verwendet werden, das COM verwenden kann, einschließlich VB, Delphi, VC, BCB, ASP usw., fast alle Entwicklungswerkzeuge unter der Windows-Plattform.
SQL-DMO verwendet
Warum müssen wir SQL-DMO verwenden, um Datenbanken zu verwalten? Ist es für uns nicht genug, die Datenbank mit Enterprise Manager- und T-SQL-Skripten zu verwalten? SQL-DMO kann flexible, anpassbare und effiziente Datenbankverwaltungsaktivitäten durchführen. Da SQL-DMO eine Verwaltungsschnittstelle für SQL Server über Programmierung bietet, können Sie die Verwaltungsaktivitäten entsprechend Ihren Anforderungen anpassen. Wenn wir beispielsweise eine große Organisation mit vielen SQL Server -Instanzen verwalten. Jetzt müssen Sie einen Benutzer zu allen SQL-Server-Instanzen in Ihrer Organisation hinzufügen, wenn Sie Benutzeranrufe zu jeder SQL-Serverinstanz über Enterprise Manager hinzufügen, ist dies eine zeitaufwändige und arbeitsintensive Operation, die anfällig für menschliche Fehler ist Sie verwenden die SQL-DMO-Programmierung, um die Anrufe zu implementieren. Sie kann einfach und effizient mit einem Zyklus abgeschlossen werden. Nach Ansicht des Autors ist es wichtiger, dass MSDE mit SQL-DMO verwaltet werden kann. MS SQL Server ist teuer, während MSDE kostenlos ist. In einigen kleinen und mittelgroßen Anwendungen ist MSDE ausreichend. Da MSDE jedoch nur eine Datenbank -Engine bereitstellt, jedoch keine visuelle Verwaltungsschnittstelle bietet, ist es unmöglich, die Datenbanken in MSDE regelmäßig zu verwalten, was den Anwendungsbereich von MSDE einschränkt. Wenn wir SQL-DMO verwenden, können wir zu diesem Zeitpunkt unsere eigene Datenbankverwaltungsschnittstelle bereitstellen, damit wir eine bestimmte reguläre Verwaltung der Datenbank in MSDE durchführen können. Wenn Zeit und Kosten nicht berücksichtigt werden, können Sie eine Verwaltungsschnittstelle erstellen, die der von Enterprise Manager ähnelt. Tatsächlich werden die meisten Funktionen des Enterprise Managers auch mit SQL-DMO implementiert. (SQL-NS wird verwendet (SQL-Namesspace, das auch eine COM-Objektsammlung ist und Zugriff auf den Objektnamenraum in SQL Server bietet), aber SQL-NS selbst basiert auch auf SQL-DMO)
SQL-DMO-Host und Komposition
Der Host von SQL-DMO ist sqldmo.dll, das sich unter X:/Programmdateien/Microsoft SQL Server/80/Tools/Binn befindet. Darüber hinaus sind die folgenden Dateien erforderlich: l
SQLDMO.DLL ( Haupttypbibliothek) l
SQLDMO.RLL ( Language Resource Datei) l
SQLSVC.DLL ( Typenbibliothek für Datenbankverwaltung) L
SQLSVC.RLL ( Sprachressourcendatei) l
SQLunirl .Dll (Unicode -Umleitungschicht) L
SQLRSLD.DLL ( für Ressourcenlade) L
ODBC ( einschließlich ODBC32.dll, SQLSRV32.DLL, ODBCBCP.DLL usw.) Hier finden Sie eine Erklärung der Callstruktur (Abbildung 1):
| Unsere Anwendung erstellt hier SQL-DMO mithilfe von SQL-DMO |
Abbildung 1 SQL-DMO-Anrufstruktur
SQL-DMO-Objektbaum
Schauen wir uns zunächst den riesigen und komplexen Objektbaum von SQL-DMO an (siehe Abbildung 3): SQLServer-Objekt ist das Rückgrat dieses Objektbaum Unter IT -Datenbankarchitektur und Wartungsaufgaben in SQLServer. L Jobserver Branch, eine Reihe von Objekten unter IT implementiert den SQL Server Agent (Agent) -Dienst. l Replikationszweig, eine Reihe von Objekten unter IT implementiert den Replikationsdienst von SQL Server. Es gibt auch Dinge zu beachten: l Der Objektbaum listet das Anwendungsobjekt nicht auf, aber dies ist tatsächlich ein relativ wichtiges Objekt. Jedes SQL-DMO-Objekt hat eine Eigenschaft, die auf das Anwendungsobjekt zeigt. Das Anwendungsobjekt repräsentiert eine globale Anwendung, die zwei Sammlungsobjekte enthält: Server und Servergruppen. Wie in Abbildung 2 dargestellt: Abbildung 2 Anwendungsobjekt L-Objektbaum repräsentiert nur die Struktur von SQL-DMO und listet nicht alle Objekte auf, wie z. B. Namelist-Objekt, Servergroup-Objekt usw. Der SQL-DMO-Objektbaum hat eine komplexe Struktur und viele Objekte. Abbildung 3 SQL-DMO-Objektbaum
Implementierung von delphi eingekapselten SQL-DMO
Das Folgende ist eine Beschreibung der Komponente TDBCTRL für die vom Autor mit Delphi implementierte SQL-DMO-Kapselung. Da ich in einem bestimmten Projekt eine kostenlose Datenbank -Engine brauchte, habe ich mich endlich von MSDE entschieden, aber MSDE hat keine Verwaltungsschnittstelle, es ist nur eine Engine. Daher müssen eine einfache und klare Verwaltungsschnittstelle für MSDE bereitgestellt werden. Wir müssen nicht so viele Verwaltungsfunktionen wie Enterprise Manager bereitstellen, sondern nur die am häufigsten verwendeten Funktionen. In Anbetracht der Benutzerfreundlichkeit und der Skalierbarkeit wird beschlossen, sie in Form von Komponenten bereitzustellen. Die implementierten Komponenten bieten eine Verpackungsschicht für SQL-DMO, verkaps einige häufig verwendete Funktionen und vereinfachen Sie die Verwendung. Beachten Sie, dass das Kompilieren dieser Komponente die Einführung der Bibliothek vom Typ SQL-DMO und die Generierung des entsprechenden Beschreibungscodes erfordert. Der Code enthält viele regelmäßige Verwendung von Delphi und die idiomatische Notation von COM -Objekten. Ich werde nicht diskutieren, wie Delphi Com hier verwendet. Leser können sich auf verwandte Bücher verweisen. Diese Komponente enthält die folgenden Eigenschaften: Eigenschaftshost: String Lesen Sie Fhost Write Fhost; // Hostname, dh der SQL Server -Instanzname, um die Eigenschaftskennwort zu verbinden: Zeichenfolge FPWD Schreiben Sie FPWD; Ogin: String Read Flogin Write Flogin; Ein privates Datenmitglied: SQLServer zum Speichern. Sein Typ ist _SQLServr. Der Konstruktor soll eine Verbindung herstellen, um ein SQLServer -Objekt zu erstellen. Der Destruktor dient auch dazu, die Zerstörung des SQLServer -Objekts zu vervollständigen. Konstruktor tdbctrl.create (aowner: tcomponent); Danach wird Delphi die Zerstörung von COM -Objekten hinter den Kulissen abschließen. Erb; Ende; Wenn wir eine bestimmte SQL -Serverinstanz verwalten und bedienen möchten, müssen wir zunächst eine Verbindung zu dieser Instanz herstellen. Die folgende ConnectToServer -Funktion implementiert die Funktion, wie man eine SQL -Serverinstanz herstellt. Funktion tdbctrl.connectToServer: boolean; Ergebnis: Ausnahme von Eoleexception beginnen Showmessage (E.Message); abhängig von der protokollierten Benutzerberechtigung). Einige der unten aufgeführten Methoden zeigen einige Funktionen. Die GetTablelist -Methode erhält alle Tabellennamen einer Datenbank und gibt sie in einer TStringlist zurück. Funktion tdbctrl.gettableList (DBName: String; .Databases.Item (DBNAME, SQLSERVER); // Datenbankobjekt basierend auf dem Datenbanknamen für i: = 1 bis nowdb.tables D (NOWTABLE .NAME); Alle Ansichten in der Datenbank (Ansichten), alle Felder einer Tabelle oder Ansicht (Spalten), alle Datendateigruppen einer Datenbank und Datendateien (Dateigruppen, DBfiles) usw. Diese können speziell auf die Objektstrukturstruktur von von der Objektstruktur verwiesen werden SQL-DMO. Die Verwendung von SQL-DMO-Objekten kann die folgenden grundlegenden Schritte befolgen: Rufen Sie ein Objekt oder ein Sammlungsobjekt über das Objekt der oberen Ebene ein und verwenden Sie das Objekt oder verwenden Sie ein Objekt im Sammelobjekt vor der Verwendung. Im Allgemeinen gibt es eine Elementmethode, wenn es sich um ein Sammelobjekt handelt, und das Sammlungsmitglied kann basierend auf Index oder Namen zurückgegeben werden. Es ist zu beachten, dass der Index bei 1 anstelle von 0 beginnt. Die oben genannten Methoden werden nachgewiesen, wie Informationen aus der Datenbank erhalten werden. Diese Methode zeigt, wie die Datenbank verwaltet wird. Funktion tdbctrl.backupdb (DBNAME, BACKUPFILE: STRING): BOOLEAN; // Die bestehenden Parameter sind der Datenbankname und der Backup -Dateiname var dmoback: _backup; Geräteobjekt starten Sie das Backup -Gerät (BackupFile). = DBNAME+'BAK'; Hier wird der Wert nicht zurückgegeben, es gibt keine Möglichkeit, dass die Ausnahme hinzugefügt wird, da das Backup -Set bereits vorhanden ist. = DBNAME+'BAK'; nil; e nd; Ende; zusätzlich möchte ich ein Beispiel geben, wie das zu Beginn erwähnte Anwendungsobjekt verwendet wird. Diese Methode soll die Namen aller verfügbaren (dh erreichbaren und verbindbaren) SQL Server -Instanzen abrufen. Funktion TDBCTRL.getServerlist (VAR Serverlist: TStringList): Boolean; var App: _application; ; Objektende; End; . Die Leser können sich auf das Online -Buch des Beispielcode und SQL Server beziehen, um aus einem Beispiel zu lernen und die gewünschten Funktionen zu implementieren. Wenn Sie den gesamten Code für diese Komponente benötigen, können Sie mich danach fragen.
Andere Anweisungen
Die Version 2000 von SQL-DMO ist vollständig mit SQL Server7.0 und SQL Server 2000 kompatibel. Es werden jedoch mehr als 80 neue Schnittstellen bereitgestellt, um die neuen Funktionen von SQL Server 2000 zu unterstützen. Diese neuen Schnittstellen enden alle mit "2", bei denen es sich um Supersets dieser Schnittstellen im ursprünglichen SQL Server 7.0 handelt. Das heißt, wenn Sie die neuen Funktionen von SQL Server 2000 verwenden möchten, müssen Sie die Schnittstelle mit "2" am Ende verwenden.
Bibliographie
L Microsoft MSDNL Microsoft SQL Server Online BookL "Delphi Com eingehende Programmierung" (US) (US) Eric Harmon Machinery Industry Press