Dela via


Overview (SMO)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSQL-databas i Förhandsversion av Microsoft Fabric

SQL Server Management Objects (SMO) är objekt som är utformade för programmatisk hantering av Microsoft SQL Server. Du kan använda SMO för att skapa anpassade SQL Server-hanteringsprogram. Även om SQL Server Management Studio är ett kraftfullt och omfattande program för att hantera SQL Server kan det finnas tillfällen då du skulle få bättre service av ett SMO-program.

Till exempel kan de användarprogram som styr SQL Server-hanteringsuppgifterna behöva förenklas för att uppfylla behoven hos nya användare och minska träningskostnaderna. Du kan behöva skapa anpassade SQL Server-databaser eller skapa ett program för att skapa och övervaka indexens effektivitet. Ett SMO-program kan också användas för att sömlöst inkludera maskinvara eller programvara från tredje part i databashanteringsprogrammet.

Eftersom SMO är kompatibelt med SQL Server 2005 (9.x) och senare versioner kan du enkelt hantera en miljö med flera versioner.

Bland funktionerna i SMO finns följande:

  • Cachelagrad objektmodell och skapande av optimerad objektinstans. Objekt läses bara in när de refereras. Objektegenskaper läses bara in delvis när objektet skapas. De återstående objekten och egenskaperna läses in när de refereras direkt.

  • Batchbaserad körning av Transact-SQL-instruktioner. Instruktioner batchas för att förbättra nätverksprestanda.

  • Avbilda Transact-SQL-instruktioner. Tillåter att alla åtgärder registreras i ett skript. Management Studio använder den här funktionen för att skripta en åtgärd i stället för att köra den omedelbart.

  • Hantering av SQL Server-tjänster med WMI-providern. SQL Server-tjänster kan startas, stoppas och pausas programmatiskt.

  • Advanced Scripting. Transact-SQL skript kan genereras för att återskapa SQL Server-objekt som beskriver relationer till andra objekt på SQL Server-instansen.

  • Användning av unika resursnamn (URI:er). Med ett URN kan du skapa instanser av och referera till SMO-objekt.

SMO representerar också som nya objekt eller egenskaper många funktioner och komponenter som introducerades i SQL Server 2005 (9.x). Dessa nya funktioner och komponenter omfattar följande:

SMO-namnområdet är Microsoft.SqlServer.Management.Smo. SMO implementeras som en Microsoft .NET Framework-sammansättning. Det innebär att den vanliga språkkörningen från Microsoft .NET Framework version 2.0 måste installeras innan du använder SMO-objekten. SMO-sammansättningarna installeras som standard i Global Assembly Cache (GAC) med alternativet SQL Server SDK. Sammansättningarna finns i C:\Program Files\Microsoft SQL Server\130\SDK\Sammansättningar. Mer information finns i Visual Studio .NET Framework-dokumentationen.

SMO Classes

SMO-klasser innehåller två kategorier: instansklasser och verktygsklasser.

Instance Classes

Instansklasserna representerar SQL Server-objekt som servrar, databaser, tabeller, utlösare och lagrade procedurer. Klassen ServerConnection används för att upprätta en anslutning till instansen av SQL Server och styra avbildningsläget för kommandon som skickas till den.

SMO-instansobjekten bildar en hierarki som representerar hierarkin för en databasserver. Längst upp finns instanserna av SQL Server, under vilka är databaserna, och följer med tabeller, kolumner, utlösare och så vidare. Om det är logiskt att det finns en överordnad till många underordnade relationer, till exempel en tabell med en eller flera kolumner, representeras det underordnade av en samling objekt. I annat fall representeras det underordnade objektet av ett objekt.

Utility Classes

Verktygsklasser är en grupp objekt som har skapats explicit för att utföra specifika uppgifter. De har delats in i olika objekthierarkier baserat på funktion:

  • Transfer class. Detta används för att överföra schema och data till en annan databas.

  • Klasser för säkerhetskopiering och återställning. Dessa används för att säkerhetskopiera och återställa databaser.

  • Scripter Class. Detta används för att skapa skriptfiler för regenerering av objekt och deras beroenden.

SMO Features

Optimized Performance

SMO-arkitekturen är effektiv när det gäller minne eftersom objekt endast delvis instansieras först och minimal egenskapsinformation begärs från servern. Fullständig instansiering av objekt fördröjs tills objektet uttryckligen refereras till. Ett objekt instansieras helt när en egenskap begärs som inte finns i den uppsättning egenskaper som först hämtas, eller när en metod anropas som kräver en sådan egenskap. Övergången mellan delvis instansierade och helt instansierade objekt är transparent för användaren. Dessutom hämtas inte vissa egenskaper som använder mycket minne, såvida inte egenskapen uttryckligen refereras till. Ett exempel på detta är Size egenskapen för objektegenskapen Database . Partiell instansiering kräver dock fler turer i nätverket och kanske inte är det bästa alternativet för ditt program.

Du kan styra instansieringen så att den passar systemmiljön. Om du förlitar dig på fördröjd instansiering minimeras mängden minne som krävs av programmet, även om det kan utlösa många serverbegäranden när egenskaper refereras.

Instansklasser, objekt som representerar verkliga databasobjekt, kan finnas i tre instansnivåer. Dessa är minimalt instansierade (endast de minimala nödvändiga egenskaperna läse i ett block), delvis instansierade (alla egenskaper som använder en relativt stor mängd minne läss i ett block) och instansieras helt. Oinstantierade och helt instansierade är de traditionella instansieringstillstånden. Det delvis instansierade tillståndet ökar effektiviteten eftersom ett delvis instansierat objekt inte innehåller värden för den fullständiga uppsättningen objektegenskaper. Partiell instansiering är standardtillståndet för ett objekt som inte refereras direkt. När en av dessa egenskaper refereras genereras ett fel som uppmanar till en fullständig instansiering av objektet.

Capture Execution

Direktkörning är den vanliga körningsmetoden. Instruktioner skickas direkt till en instans av SQL Server när de uppstår. Avbildningskörning är alternativet till detta.

Med avbildningskörning kan du samla in Transact-SQL batchar som vanligtvis skulle köras. På så sätt kan SMO-programmeraren skjuta upp skriptet, lagra det för senare körning eller tillhandahålla en förhandsversion för slutanvändaren. Till exempel kan en skapa databas, en skapa tabell och en create index-instruktion skickas i en batch och sedan köras som tre sekventiella steg. Den här funktionen styrs av användaren med hjälp Server av objektet.

WMI Provider

WMI-providerobjekten omsluts av SMO. Detta ger SMO-programmeraren en enkel objektmodell som liknar SMO-klasser nära, utan att behöva förstå programmeringsmodellen som representeras av namnområdet och informationen om SQL Server WMI-providern. Med WMI-providern kan du konfigurera SQL Server-tjänster, alias och klient- och servernätverksbibliotek.

Scripting

I SMO har skriptning förbättrats och flyttats till klassen Scripter . Klassen Scripter kan identifiera beroenden, förstå relationerna mellan objekt och aktivera manipulering av beroendehierarkin. Huvudskriptobjektet är Scripter-objektet . Det finns också flera stödobjekt som hanterar beroendena och svarar på förlopps- eller felhändelser.

Scripter-objektet stöder följande avancerade skriptalternativ:

  • Enkel 1-fasskriptning (skapar skriptet i ett steg)

  • Avancerad 3-fasskriptning (skapar skriptet i tre steg; beroendeidentifiering, listgenerering, skriptgenerering)

  • Identifiering av tvåvägsberoende (möjliggör identifiering av beroenden eller beroenden)

  • Svar på förloppshändelser

  • Svar på felhändelser

Unika resursnamn

Ett nyckelbegrepp i att använda SMO-objektbiblioteket är URN (Unique Resource Name). URN använder en syntax som liknar XPath. XPath är en hierarkisökväg som används för att ange ett objekt där varje nivå har kvalificerare och funktioner. I SMO har URN två element, sökvägen och attributnamngivningen som har begränsad funktionalitet. Sökvägen används för att ange platsen för objektet medan attributnamngivningen tillåter en viss grad av filtrering.

Ett exempel på ett URN för en databas är

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

URN för ett objekt kan hämtas genom att referera till dess URN-egenskap. Scripter-objektet använder också URI:er som parametrar som skickar objektreferenser till metoden för Scripter-objektet . Dessutom kan ett URN anges för metoden GetSmoObject för serverobjektet . Detta används för att skapa en instans av SMO-objektet.

SQL Server-funktioner som representeras i SMO

Tabell- och indexpartitionering

Med indextabellpartitionering kan du hantera spridningen av data i tabeller och index över filgrupper. Den här nya funktionen representeras av SMO-objekt.

EndPoints

SOAP- och databasspeglingsbegäranden hanteras av slutpunkter med hjälp av Endpoint objektet.

Ögonblicksbildisolering/versionshantering på radnivå

Ögonblicksbildisolering (versionshantering på radnivå) representeras av nya Database objektegenskaper.

XML-schemanamnområde, XML-index och XML-datatyp

XML-schemanamnområden representeras i SMO av en samling objekt. XML-index representeras i SMO av en indexobjektegenskap.

Full-Text Sökförbättringar

Nya objekt tillhandahålls i SMO som representerar förbättringarna av fulltextsökning.

Page Verify

Objektet PageVerify representerar alternativen för databassidans verifiering.

Snapshot Databases

En ögonblicksbilddatabas är en skrivskyddad kopia av en angiven databas som en specifik tidpunkt. En ögonblicksbilddatabas kan anges med hjälp IsDatabaseSnapshot av objektets Database egenskap.

Service Broker

Service Broker och dess funktioner representeras av en grupp objekt

Index Enhancements

Förbättringar av SQL Server-index representeras av nya egenskaper i Index objektet.

See Also

Begrepp för replikeringshanteringsobjekt