Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
              Gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
SQL-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:
Tabell- och indexpartitionering för lagring av data i ett partitionsschema. Mer information finns i partitionerade tabeller och index.
HTTP-slutpunkter för hantering av SOAP-begäranden. Mer information finns i Implementera slutpunkter.
Ögonblicksbildisolering och versionshantering på radnivå för ökad samtidighet. Mer information finns i Arbeta med ögonblicksbildisolering.
XML-schemasamling, XML-index och XML-datatyp ger validering och lagring av XML-data. Mer information finns i XML-schemasamlingar (SQL Server) och Använda XML-scheman.
Ögonblicksbilddatabaser för att skapa skrivskyddade kopior av databaser.
Service Broker-stöd för meddelandebaserad kommunikation. Mer information finns i SQL Server Service Broker.
Synonymstöd för flera namn på SQL Server-databasobjekt. Mer information finns i Synonymer (databasmotor).
Hanteringen av Database Mail som gör att du kan skapa e-postservrar, e-postprofiler och e-postkonton i SQL Server. Mer information finns i Database Mail.
Stöd för registrerade servrar för registrering av anslutningsinformation. Mer information finns i Registrera servrar.
Spåra och spela upp SQL Server-händelser. Mer information finns i SQL Server Profiler, SQL Trace, SQL Server Distributed Replay och Extended Events.
Stöd för certifikat och nycklar för säkerhetskontroll. Mer information finns i Krypteringshierarki.
DDL-utlösare för att lägga till funktioner när DDL-händelser inträffar. Mer information finns i DDL-utlösare.
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.