Übersicht (SMO)

Gilt für: SQL Server Azure SQL-Datenbank Azure SQL verwaltete Instanz Azure Synapse Analytics

SQL Server Management Objects (SMO) sind Objekte, die für die programmgesteuerte Verwaltung von Microsoft SQL Server entwickelt wurden. Sie können SMO verwenden, um benutzerdefinierte SQL Server-Verwaltungsanwendungen zu erstellen. Obwohl SQL Server Management Studio eine leistungsstarke und umfangreiche Anwendung für die Verwaltung von SQL Server ist, kann es vorkommen, dass Sie besser von einer SMO-Anwendung bedient werden würden.

Beispielsweise müssen die Benutzeranwendungen, die die SQL Server-Verwaltungsaufgaben steuern, vereinfacht werden, um die Anforderungen neuer Benutzer zu erfüllen und die Schulungskosten zu reduzieren. Möglicherweise müssen Sie benutzerdefinierte SQL Server-Datenbanken erstellen oder eine Anwendung zum Erstellen und Überwachen der Effizienz von Indizes erstellen. Eine SMO-Anwendung kann auch verwendet werden, um Hard- oder Software anderer Hersteller nahtlos in die Anwendung zur Datenbankverwaltung einzubinden.

Da SMO mit SQL Server 2005 (9.x) und höheren Versionen kompatibel ist, können Sie eine Umgebung mit mehreren Versionen problemlos verwalten.

Features in SMO umfassen Folgendes:

  • Zwischengespeichertes Objektmodell und optimierte Objektinstanzerstellung. Objekte werden nur geladen, wenn auf sie verwiesen wird. Objekteigenschaften werden beim Erstellen der Objekte nur teilweise geladen. Die übrigen Objekte und Eigenschaften werden geladen, wenn direkt auf sie verwiesen wird.

  • Batchausführung von Transact-SQL-Anweisungen. Anweisungen werden im Batchmodus ausgeführt, um die Netzwerkleistung zu verbessern.

  • Erfassen Sie Transact-SQL-Anweisungen. Ermöglicht die Erfassung eines beliebigen Vorgangs in einem Skript. Management Studio verwendet diese Funktion, um einen Vorgang zu skripten, anstatt ihn sofort auszuführen.

  • Verwaltung von SQL Server-Diensten mit dem WMI-Anbieter. SQL Server-Dienste können programmgesteuert gestartet, beendet und angehalten werden.

  • Erweiterte Skripterstellung. Transact-SQL-Skripts können generiert werden, um SQL Server-Objekte neu zu erstellen, die Beziehungen zu anderen Objekten in der Sql Server-Instanz beschreiben.

  • Verwenden eindeutiger Ressourcennamen (URNs). Ein URN ermöglicht es Ihnen, Instanzen von SMO-Objekten zu erstellen und darauf zu verweisen.

SMO stellt auch als neue Objekte oder Eigenschaften viele Features und Komponenten dar, die in SQL Server 2005 (9.x) eingeführt wurden. Zu diesen neuen Funktionen und Komponenten gehören:

Der SMO-Namespace lautet Microsoft.SqlServer.Management.Smo. SMO wird als Microsoft .NET Framework-Assembly implementiert. Dies bedeutet, dass die Common Language Runtime von Microsoft .NET Framework, Version 2.0, installiert werden muss, bevor die SMO-Objekte verwendet werden. Die SMO-Assemblys werden standardmäßig im globalen Assemblycache (GAC) mit der SQL Server SDK-Option installiert. Die Assemblys befinden sich in C:\Programme\Microsoft SQL Server\130\SDK\Assemblies. Weitere Informationen finden Sie in der Visual Studio .NET Framework-Dokumentation.

SMO-Klassen

SMO-Klassen umfassen zwei Kategorien: Instanzklassen und Hilfsprogrammklassen.

Instanzklassen

Die Instanzklassen stellen SQL Server-Objekte wie Server, Datenbanken, Tabellen, Trigger und gespeicherte Prozeduren dar. Die ServerConnection Klasse wird verwendet, um eine Verbindung mit der Instanz von SQL Server herzustellen und den Aufnahmemodus von Befehlen zu steuern, die an sie gesendet werden.

Die SMO-Instanzobjekte bilden eine Hierarchie, die die Hierarchie eines Datenbankservers darstellt. Oben befinden sich die Instanzen von SQL Server, unter denen es sich um die Datenbanken handelt und denen Tabellen, Spalten, Trigger usw. folgen. Ist eine 1:n-Beziehung zwischen den über- und untergeordneten Elementen logisch, etwa im Fall einer Tabelle mit mehreren Spalten, wird das untergeordnete Element durch eine Objektauflistung dargestellt. Andernfalls wird das untergeordnete Element durch ein Objekt dargestellt.

Hilfsprogrammklassen

Hilfsprogrammklassen sind eine Gruppe von Objekten, die explizit erstellt wurden, um bestimmte Tasks auszuführen. Sie werden auf Grundlage ihrer Funktion in unterschiedliche Objekthierarchien unterteilt:

  • Übertragungsklasse. Diese wird verwendet, um Schema und Daten in eine andere Datenbank zu übertragen.

  • Klassen zur Sicherung und Wiederherstellung. Diese werden zum Sichern und Wiederherstellen von Datenbanken verwendet.

  • Scripter-Klasse. Diese wird zum Erstellen von Skriptdateien für die erneute Generierung von Objekten und ihren Abhängigkeiten verwendet.

SMO-Features

Optimierte Leistung

Die SMO-Architektur ist im Hinblick auf den Speicher effizient, da Objekte nur teilweise instanziiert werden und minimale Eigenschaftsinformationen vom Server angefordert werden. Die vollständige Instanziierung der Objekte wird verzögert, bis auf das Objekt explizit verwiesen wird. Ein Objekt wird vollständig instanziiert, wenn eine Eigenschaft angefordert wird, die nicht Bestandteil der zunächst abgerufenen Eigenschaftengruppe ist, oder wenn eine Methode aufgerufen wird, die eine solche Eigenschaft erfordert. Der Übergang zwischen teilweise und vollständig instanziierten Objekten erfolgt für den Benutzer transparent. Darüber hinaus werden einige Eigenschaften, die viel Arbeitsspeicher belegen, nur dann abgerufen, wenn explizit auf die Eigenschaft verwiesen wird. Ein Beispiel hierfür ist die Size-Eigenschaft der Database-Objekteigenschaft. Die teilweise Instanziierung erfordert jedoch mehr Netzwerkroundtrips und stellt möglicherweise nicht die leistungseffizienteste Option für Ihre Anwendung dar.

Sie können die Instanziierung entsprechend der Systemumgebung steuern. Durch die verzögerte Instanziierung wird der von der Anwendung benötigte Arbeitsspeicher minimiert, wenngleich dadurch möglicherweise zahlreiche Serveranforderungen ausgelöst werden, wenn auf Eigenschaften verwiesen wird.

Für Instanzklassen (Objekte, die wirkliche Datenbankobjekte darstellen) sind drei Ebenen der Instanziierung möglich: minimal instanziiert (nur die erforderlichen Mindesteigenschaften werden in einem Block gelesen), teilweise instanziiert (alle Eigenschaften, die relativ viel Speicher in Anspruch nehmen, werden in einem Block gelesen) und vollständig instanziiert. Unbeabsichtigte und vollständig instanziierte sind die traditionellen Instanziierungszustände. Die teilweise Instanziierung steigert die Effizienz, da ein teilweise instanziiertes Objekt nicht Werte für alle Objekteigenschaften enthält. Die teilweise Instanziierung ist der Standardstatus für ein Objekt, auf das nicht direkt verwiesen wird. Wird auf eine dieser Eigenschaften verwiesen, tritt ein Fehler auf, der zur vollständigen Instanziierung des Objekts auffordert.

Aufzeichnungsausführung

Die direkte Ausführung ist die übliche Methode der Ausführung. Anweisungen werden direkt an eine Instanz von SQL Server gesendet, sobald sie anfallen. Eine Alternative stellt die Aufzeichnung der Ausführung dar.

Mit der Erfassungsausführung können Sie Transact-SQL-Batches erfassen, die in der Regel ausgeführt werden. Auf diese Weise kann der SMO-Programmierer das Skript aufschieben, zur späteren Ausführung speichern oder dem Endbenutzer eine Vorschau bereitstellen. Beispielsweise kann eine Create-Datenbank, eine Create-Tabelle und eine Create Index-Anweisung in einem Batch gesendet und dann als drei sequenzielle Schritte ausgeführt werden. Diese Funktionalität wird vom Benutzer mit dem Server-Objekt gesteuert.

WMI-Anbieter

Die WMI-Anbieterobjekte werden von SMO umschlossen. Dadurch erhält der SMO-Programmierer ein einfaches Objektmodell, das SMO-Klassen ähnlich ist, ohne das Programmiermodell zu verstehen, das durch den Namespace und die Details des SQL Server-WMI-Anbieters dargestellt wird. Mit dem WMI-Anbieter können Sie SQL Server-Dienste, Aliase und Client- und Servernetzwerkbibliotheken konfigurieren.

Skript

In SMO wurde skripting verbessert und in die Scripter-Klasse verschoben. Die Scripter-Klasse kann Abhängigkeiten ermitteln, die Beziehungen zwischen Objekten verstehen und die Manipulation der Abhängigkeitshierarchie ermöglichen. Das Hauptskriptingobjekt ist das Scripter-Objekt . Daneben gibt es mehrere unterstützende Objekte, die Abhängigkeiten behandeln und auf Fortschritts- oder Fehlerereignisse antworten.

Das Scripter-Objekt unterstützt die folgenden erweiterten Skriptoptionen:

  • Einfache einphasige Skripterstellung (erstellt das Skript in einem Schritt)

  • Erweiterte 3-Phasen-Skripterstellung (erstellt das Skript in drei Schritten; Abhängigkeitsermittlung, Listengenerierung, Skriptgenerierung)

  • Bidirektionale Abhängigkeitsermittlung (ermöglicht die Ermittlung von Abhängigkeiten oder abhängigen Elementen)

  • Antwort auf Fortschrittsereignisse

  • Antwort auf Fehlerereignisse

Eindeutige Ressourcennamen

Ein Schlüsselkonzept bei der Verwendung der SMO-Objektbibliothek ist der eindeutige Ressourcenname (Unique Resource Name, URN). Die URN-Syntax ähnelt der XPath-Syntax. Die XPath-Syntax stellt einen Hierarchiepfad zur Angabe eines Objekts dar, bei dem jede Ebene Qualifizierer und Funktionen aufweist. In SMO verfügt der URN über zwei Elemente, den Pfad und die Attributbenennung mit eingeschränkter Funktionalität. Über den Pfad wird der Speicherort des Objekts angegeben, während die Attributbenennung eine gewisse Filterung erlaubt.

Ein URN-Beispiel für eine Datenbank ist

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

Der URN eines Objekts kann abgerufen werden, indem auf seine URN-Eigenschaft verwiesen wird. Das Scripter-Objekt verwendet auch URNs als Parameter, die Objektverweise an die Methode des Scripter-Objekts übergeben. Darüber hinaus kann ein URN für die GetSmoObject-Methode des Server-Objekts angegeben werden. Damit wird eine Instanz des SMO-Objekts erstellt.

IN SMO dargestellte SQL Server-Features

Tabellen- und Indexpartitionierung

Mithilfe der Indextabellenpartitionierung können Sie die Spannweite von Daten in Tabellen und Indizes dateigruppenübergreifend verwalten. Diese neue Funktion wird durch SMO-Objekte dargestellt.

Endpunkte

SOAP- und Datenbankspiegelungs-Anforderungen werden von Endpunkten verarbeitet, die das Endpoint-Objekt verwenden.

Snapshot Isolation/Zeilenebene Versionsverwaltung

Die Momentaufnahmeisolation (Zeilenebenen-Versionsverwaltung) wird durch neue Database-Objekteigenschaften dargestellt.

XML-Schemanamespace, XML-Indizes und XML-Datentyp

XML-Schemanamespaces werden in SMO durch eine Auflistung von Objekten dargestellt. XML-Indizes werden in SMO durch eine Index-Objekteigenschaft dargestellt.

Verbesserungen der Volltextsuche

In SMO werden neue Objekte bereitgestellt, die eine erweiterte Volltextsuche ermöglichen.

Seitenüberprüfung

Das PageVerify-Objekt stellt Optionen zur Überprüfung von Datenbankseiten dar.

Snapshotdatenbanken

Eine Momentaufnahmedatenbank ist eine schreibgeschützte Kopie einer bestimmten Datenbank zu einem gegebenen Zeitpunkt. Eine Momentaufnahmedatenbank kann mit der IsDatabaseSnapshot-Eigenschaft des Database-Objekts angegeben werden.

Service Broker

Der Service Broker und seine Funktionalität werden durch eine Gruppe von Objekten dargestellt.

Indexerweiterungen

SQL Server-Indexerweiterungen werden durch neue Eigenschaften im Index Objekt dargestellt.

Weitere Informationen

Replication Management Objects Concepts