Übersicht (SMO)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse Analytics

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

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 senken. Möglicherweise müssen Sie angepasste 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 problemlos eine Umgebung mit mehreren Versionen verwalten.

Zu den Features in SMO gehören:

  • 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 ein Skript für einen Vorgang zu erstellen, 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 Instanz von SQL Server 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 aus der Microsoft .NET Framework Version 2.0 installiert werden muss, bevor die SMO-Objekte verwendet werden. Die SMO-Assemblys werden standardmäßig mit der Option SQL Server SDK im globalen Assemblycache (GAC) installiert. Die Assemblys befinden sich unter C:\Programme\Microsoft SQL Server\130\SDK\Assemblies. Weitere Informationen finden Sie in der Dokumentation zu Visual Studio .NET Framework.

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 Erfassungsmodus der an sie gesendeten Befehle zu steuern.

Die SMO-Instanzobjekte bilden eine Hierarchie, die die Hierarchie eines Datenbankservers darstellt. Oben befinden sich die Instanzen von SQL Server, unter denen sich die Datenbanken befinden, und folgen sie mit Tabellen, Spalten, Triggern usw. 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 hinsichtlich des Arbeitsspeichers effizient, da Objekte zunächst nur teilweise instanziiert werden und minimale Eigenschafteninformationen 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. Unbelegt und vollständig instanziiert 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.

Aufzeichnen der Ausführung

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

Mit der Erfassungsausführung können Sie Transact-SQL-Batches erfassen, die normalerweise 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 können eine create database, eine create table 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 sehr ähnlich ist, ohne dass das Programmiermodell, das durch den Namespace dargestellt wird, und die Details des SQL Server WMI-Anbieters verstehen muss. Mit dem WMI-Anbieter können Sie SQL Server Dienste, Aliase sowie Client- und Servernetzwerkbibliotheken konfigurieren.

Skripterstellung

In SMO wurde die Skripterstellung verbessert und in die Scripter-Klasse verschoben. Die Scripter-Klasse kann Abhängigkeiten ermitteln, die Beziehungen zwischen Objekten verstehen und die Bearbeitung 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)

  • Erweitertes 3-Phasen-Skripting (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.

SQL Server in SMO dargestellten 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.

Momentaufnahmeisolation/Versionsverwaltung auf Zeilenebene

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.

Erweiterte 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.

Momentaufnahmen

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

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