Panoramica (SMO)Overview (SMO)

Si applica a:Applies to: sìSQL ServerSQL Server (tutte le versioni supportate) yesSQL ServerSQL Server (all supported versions) Sìdatabase SQL di AzureAzure SQL DatabaseYesdatabase SQL di AzureAzure SQL Database SìIstanza gestita di SQL di AzureAzure SQL Managed InstanceYesIstanza gestita di SQL di AzureAzure SQL Managed Instance sìAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse AnalyticsSi applica a:Applies to: sìSQL ServerSQL Server (tutte le versioni supportate) yesSQL ServerSQL Server (all supported versions) Sìdatabase SQL di AzureAzure SQL DatabaseYesdatabase SQL di AzureAzure SQL Database SìIstanza gestita di SQL di AzureAzure SQL Managed InstanceYesIstanza gestita di SQL di AzureAzure SQL Managed Instance sìAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics

SQL ServerSQL ServerGli oggetti SMO (Management Objects) sono oggetti progettati per la gestione a livello di codice di MicrosoftMicrosoft SQL ServerSQL Server .Management Objects (SMO) are objects designed for programmatic management of MicrosoftMicrosoftSQL ServerSQL Server. È possibile utilizzare SMO per compilare applicazioni di gestione SQL ServerSQL Server personalizzate.You can use SMO to build customized SQL ServerSQL Server management applications. Sebbene SQL Server Management StudioSQL Server Management Studio sia un'applicazione potente e completa per la gestione di SQL ServerSQL Server, in alcuni casi è possibile che sia necessario utilizzare un'applicazione SMO.Although SQL Server Management StudioSQL Server Management Studio is a powerful and extensive application for managing SQL ServerSQL Server, there might be times when you would be better served by an SMO application.

È possibile, ad esempio, che sia necessario semplificare le applicazioni utente che controllano le attività di gestione SQL ServerSQL Server per soddisfare le necessità di nuovi utenti e ridurre i costi di formazione.For example, the user applications that control the SQL ServerSQL Server management tasks might have to be simplified to meet the needs of new users and to reduce training costs. È possibile dovere creare database SQL ServerSQL Server personalizzati o creare un'applicazione per la creazione e il controllo dell'efficienza degli indici.You might have to create customized SQL ServerSQL Server databases, or create an application for creating and monitoring the efficiency of indexes. Un'applicazione SMO può anche essere utilizzata per includere perfettamente hardware o software di terze parti nell'applicazione per la gestione di database.An SMO application might also be used to include third-party hardware or software seamlessly into the database management application.

Poiché SMO è compatibile con SQL Server 2005 (9.x)SQL Server 2005 (9.x) e versioni successive, è possibile gestire facilmente un ambiente in cui sono presenti più versioni.Because SMO is compatible with SQL Server 2005 (9.x)SQL Server 2005 (9.x) and later versions, you can easily manage a multi-version environment.

Tra le funzionalità di SMO sono incluse le seguenti:Features in SMO include the following:

  • Modello a oggetti memorizzato nella cache e creazione ottimizzata delle istanze degli oggetti.Cached object model and optimized object instance creation. Gli oggetti vengono caricati solo quando viene fatto loro riferimento in modo specifico.Objects are loaded only when specifically referenced. Le proprietà degli oggetti vengono caricate solo parzialmente quando si creano gli oggetti.Object properties are only partially loaded when the object is created. Gli oggetti e le proprietà rimanenti vengono caricati quando viene fatto loro riferimento in modo diretto.The remaining objects and properties are loaded when they are referenced directly.

  • Esecuzione in batch delle istruzioni Transact-SQLTransact-SQL.Batched execution of Transact-SQLTransact-SQL statements. Le istruzioni vengono eseguite in batch per migliorare le prestazioni della rete.Statements are batched to improve network performance.

  • Acquisizione delle istruzioni Transact-SQLTransact-SQL.Capture Transact-SQLTransact-SQL statements. Consente l'acquisizione di qualsiasi operazione in uno script.Allows any operation to be captured into a script. In Management StudioManagement Studio questa funzionalità viene utilizzata per creare uno script di un'operazione anziché eseguirla immediatamente.Management StudioManagement Studio uses this capability to script an operation instead of executing it immediately.

  • Gestione dei servizi SQL ServerSQL Server con il provider WMI.Management of SQL ServerSQL Server services with the WMI Provider. I servizi SQL ServerSQL Server possono essere avviati, arrestati e sospesi a livello di codice.SQL ServerSQL Server services can be started, stopped, and paused programmatically.

  • Generazione di script avanzata.Advanced Scripting. Gli script Transact-SQLTransact-SQL possono essere generati per ricreare oggetti di SQL ServerSQL Server che consentono di descrivere le relazioni con altri oggetti nell'istanza di SQL ServerSQL Server.Transact-SQLTransact-SQL scripts can be generated to re-create SQL ServerSQL Server objects that describe relationships to other objects on the instance of SQL ServerSQL Server.

  • Utilizzo di nomi di risorse univoci (URN).Use of Unique Resource Names (URNs). Un URN consente di creare istanze di oggetti SMO e di farvi riferimento.A URN allows you to create instances of and reference SMO objects.

In SMO sono inoltre rappresentati come nuovi oggetti o proprietà molte funzionalità e componenti introdotti in SQL Server 2005 (9.x)SQL Server 2005 (9.x).SMO also represents as new objects or properties many features and components that were introduced in SQL Server 2005 (9.x)SQL Server 2005 (9.x). Queste nuove funzionalità e componenti includono:These new features and components include the following:

Lo spazio dei nomi SMO è Microsoft.SqlServer.Management.Smo.The SMO namespace is Microsoft.SqlServer.Management.Smo. SMO viene implementato come assembly MicrosoftMicrosoft.NET Framework.NET Framework.SMO is implemented as a MicrosoftMicrosoft.NET Framework.NET Framework assembly. Ciò significa che Common Language Runtime (CLR) da MicrosoftMicrosoft.NET Framework.NET Framework versione 2.0 deve essere installato prima di utilizzare gli oggetti SMO.This means that the common language runtime from the MicrosoftMicrosoft.NET Framework.NET Framework version 2.0 must be installed before using the SMO objects. Gli assembly SMO vengono installati per impostazione predefinita nel Global Assembly Cache (GAC) con l'opzione SDK di SQL ServerSQL Server.The SMO assemblies are installed by default into the Global Assembly Cache (GAC) with the SQL ServerSQL Server SDK option. Gli assembly si trovano in C:\Programmi\Microsoft SQL Server\130\SDK\Assemblies.The assemblies are located in C:\Program Files\Microsoft SQL Server\130\SDK\Assemblies. Per altre informazioni, vedere la documentazione di Visual StudioVisual Studio.NET Framework.NET Framework.For more information, see the Visual StudioVisual Studio.NET Framework.NET Framework documentation.

Classi SMOSMO Classes

Le classi SMO includono due categorie: classi di istanze e classi di utilità.SMO classes include two categories: instance classes and utility classes.

Classi di istanzeInstance Classes

Le classi di istanze rappresentano gli oggetti SQL ServerSQL Server quali esempio server, database, tabelle, trigger e stored procedure.The instance classes represent SQL ServerSQL Server objects such as servers, databases, tables, triggers, and stored procedures. La classe ServerConnection viene utilizzata per stabilire una connessione all'istanza di SQL ServerSQL Server e per controllare la modalità di acquisizione dei comandi inviati.The ServerConnection class is used to establish a connection to the instance of SQL ServerSQL Server and control the capture mode of commands sent to it.

Gli oggetti dell'istanza SMO formano una gerarchia che rappresenta la gerarchia di un server di database.The SMO instance objects form a hierarchy that represents the hierarchy of a database server. All'inizio sono presenti le istanze di SQL ServerSQL Server seguiti dai database, quindi dalle tabelle, le colonne, i trigger e così via.At the top are the instances of SQL ServerSQL Server, under which are the databases, and following on with tables, columns, triggers and so on. Se è presente una relazione che prevede un elemento padre per molti elementi figlio, ad esempio una tabella contenente una o più colonne, l'elemento figlio verrà rappresentato da una raccolta di oggetti.If it is logical that there is a one parent to many children relationship, such as a table having one or more columns, then the child is represented by a collection of objects. In caso contrario l'elemento figlio sarà rappresentato solo da un oggetto.Otherwise the child is just represented by an object.

Classi di utilitàUtility Classes

Le classi di utilità sono un gruppo di oggetti creato in modo esplicito per eseguire attività specifiche.Utilities classes are a group of objects that have been created explicitly to perform specific tasks. Sono state divise in diverse gerarchie di oggetti in base alla funzione:They have been divided into different object hierarchies based on function:

  • Classe di trasferimento.Transfer class. Utilizzata per trasferire lo schema e i dati in un altro database.This is used to transfer schema and data to another database.

  • Classi di backup e ripristino.Backup and Restore classes. Utilizzate per eseguire il backup e il ripristino di database.These are used to back up and restore databases.

  • Classe di script.Scripter Class. Utilizzata per creare file script per la rigenerazione di oggetti e le relative dipendenze.This is used to create script files for the regeneration of objects and their dependencies.

Funzionalità SMOSMO Features

Prestazioni ottimizzateOptimized Performance

L'architettura SMO è efficiente in termini di memoria perché solo parzialmente viene creata un'istanza degli oggetti e le informazioni minime sulle proprietà vengono richieste dal server.The SMO architecture is efficient in terms of memory because objects are only partially instantiated at first, and minimal property information is requested from the server. La creazione di un'istanza completa degli oggetti viene posticipata fino a quando non viene fatto riferimento all'oggetto in modo esplicito.Full instantiation of objects is delayed until the object is explicitly referenced. L'istanza completa di un oggetto viene creata un'istanza quando viene richiesta una proprietà che non fa parte del set di proprietà recuperate inizialmente o quando viene chiamato un metodo che richiede tale proprietà.An object is fully instantiated when a property is requested that is not in the set of properties that are first retrieved, or when a method is called that requires such a property. La transizione tra la creazione di un'istanza parziale e un'istanza completa degli oggetti è visibile all'utente.The transition between partially instantiated and fully instantiated objects is transparent to the user. Inoltre, alcune proprietà che utilizzano molta memoria non vengono mai recuperate, a meno che non venga fatto riferimento alla proprietà in modo esplicito.Additionally, some properties that use lots of memory are never retrieved, unless the property explicitly referenced. Un esempio è la proprietà Size della proprietà dell'oggetto Database.An example of this is the Size property of the Database object property. Tuttavia, la creazione di un'istanza parziale richiede più tempo di round trip in rete e potrebbe non essere la migliore opzione per le prestazioni ottimizzate dell'applicazione.However, partial instantiation does require more network round trips and might not be the best performing option for your application.

È possibile controllare la creazione di un'istanza in base all'ambiente di sistema.You can control instantiation to suit the system environment. La creazione di un'istanza posticipata riduce la quantità di memoria richiesta dall'applicazione, sebbene possa generare molte richieste del server quando viene fatto riferimento alle proprietà.Relying on delayed instantiation minimizes the amount of memory required by the application, although it might trigger many server requests when properties are referenced.

Le classi di istanze, ovvero gli oggetti che rappresentano gli oggetti di database reali, possono avere tre livelli di creazione di un'istanza:Instance classes, objects that represent real database objects, can exist in three levels of instantiation. livello minimo quando vengono lette in un solo blocco solo le proprietà necessarie minime, livello parziale quando vengono lette in un solo blocco tutte le proprietà che utilizzano un quantità di memoria relativamente grande e livello completo.These are minimal-instantiated (only the minimal required properties are read in one block), partially instantiated (all the properties that use a relatively large amount of memory are read in one block), and fully instantiated. Gli stati tradizionali della creazione di un'istanza sono lo stato completo e lo stato non istanziato.Un-instantiated and fully instantiated are the traditional states of instantiation. Lo stato parziale aumenta l'efficienza poiché la creazione di un'istanza parziale di un oggetto non contiene valori per il set completo delle proprietà dell'oggetto.The partially instantiated state increases efficiency because a partially instantiated object does not contain values for the full set of object properties. Lo stato parziale è lo stato predefinito per un oggetto al quale non viene fatto direttamente riferimento.Partial instantiation is the default state for an object that is not directly referenced. Quando viene fatto riferimento a una di queste proprietà, viene generato un errore in cui viene richiesta la creazione di un'istanza completa dell'oggetto.When one of these properties is referenced, a fault is generated that prompts a full instantiation of the object.

Esecuzione dell'acquisizioneCapture Execution

L'esecuzione diretta è il metodo di esecuzione standard.Direct execution is the usual method of execution. Le istruzioni vengono inviate direttamente a un'istanza di SQL ServerSQL Server appena vengono generate.Statements are sent to an instance of SQL ServerSQL Server directly as they are incurred. L'esecuzione dell'acquisizione rappresenta il metodo alternativo.Capture execution is the alternative to this.

L'esecuzione dell'acquisizione consente di acquisire i batch Transact-SQLTransact-SQL generalmente eseguiti,Capture execution lets you capture Transact-SQLTransact-SQL batches that would typically be executed. consentendo così al programmatore SMO di posticipare lo script, archiviarlo per un'esecuzione successiva o fornire un'anteprima per l'utente finale.This lets the SMO programmer defer the script, store it for later execution, or provide a preview for the end-user. Ad esempio, un'istruzione Create database, Create Table e create index può essere inviata in un unico batch e quindi eseguita come tre passaggi sequenziali.For example, a create database, a create table, and a create index statement can be sent in one batch and then run as three sequential steps. Questa funzionalità viene controllata dall'utente tramite l'oggetto Server.This functionality is controlled by the user by using the Server object.

Provider WMIWMI Provider

In SMO sono inclusi gli oggetti del provider WMI,The WMI Provider objects are wrapped by SMO. fornendo al programmatore SMO un modello a oggetti semplice che è molto simile alle classi SMO, senza dovere necessariamente comprendere il modello di programmazione rappresentato dallo spazio dei nomi e dai dettagli del provider WMI di SQL ServerSQL Server.This provides the SMO programmer with a simple object model that is similar to SMO classes very closely, without the requirement to understand the programming model that is represented by the namespace and the details of the SQL ServerSQL Server WMI Provider. Il provider WMI consente di configurare servizi, alias e librerie di rete client e server di SQL ServerSQL Server.The WMI Provider lets you configure SQL ServerSQL Server services, aliases, and client and server network libraries.

ScriptingScripting

In SMO la generazione di script è stata migliorata e spostata nella classe dello scripter .In SMO, scripting has been enhanced and moved into the Scripter class. La classe dello scripter può individuare le dipendenze, comprendere le relazioni tra gli oggetti e abilitare la manipolazione della gerarchia di dipendenza.The Scripter class can discover dependencies, understand the relationships between objects, and enables manipulation of the dependency-hierarchy. L'oggetto di scripting principale è l'oggetto scripter .The main scripting object is the Scripter object. Sono inoltre disponibili diversi oggetti di supporto che gestiscono le dipendenze e rispondono agli eventi di stato e di errore.There are also several supporting objects that handle the dependencies and respond to progress or error events.

L'oggetto scripter supporta le seguenti opzioni di scripting avanzate:The Scripter object supports the following advanced scripting options:

  • Scripting semplice in una fase (crea lo script in un unico passaggio)Simple 1-phase scripting (creates the script in one step)

  • Scripting avanzato in 3 fasi (crea lo script in tre passaggi, individuazione delle dipendenze, generazione di elenchi, generazione di script)Advanced 3-phase scripting (creates the script in three steps; dependency discovery, list generation, script generation)

  • Individuazione dipendenze in due modi (consente l'individuazione di dipendenze o di dipendenti)Two-way dependency discovery (allows for discovery of dependencies, or dependents)

  • Risposta agli eventi di statoResponse to progress events

  • Risposta agli eventi di erroreResponse to error events

Nomi di risorse univociUnique Resource Names

Un concetto chiave nell'utilizzo della libreria di oggetti SMO è rappresentato dai nomi di risorse univoci (URN, Unique Resource Name).A key concept in using the SMO object library is the Unique Resource Name (URN). L'URN utilizza una sintassi simile a XPath.The URN uses a syntax similar to XPath. XPath è un percorso della gerarchia utilizzato per specificare un oggetto nel quale ogni livello dispone di qualificatori e funzioni.The XPath is a hierarchy path used to specify an object in which each level has qualifiers and functions. In SMO l'URN dispone di due elementi: percorso e denominazione degli attributi con funzionalità limitata.In SMO the URN has two elements, the path and attribute naming that has limited functionality. Il percorso viene utilizzato per specificare il percorso dell'oggetto mentre la denominazione degli attributi consente un grado di filtraggio.The path is used to specify the location of the object whereas the attribute naming allows for a degree of filtering.

Un esempio di URN per un database è:An example of an URN for a database is

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

L'URN di un oggetto può essere recuperato facendo riferimento alla proprietà dell'URN.The URN of an object can be retrieved by referencing its URN property. L'oggetto Scripter usa anche gli URN come parametri che passano i riferimenti a un oggetto al metodo dell'oggetto scripter .The Scripter object also uses URNs as parameters that pass object references to the method of the Scripter object. È inoltre possibile specificare un URN per il metodo GetSmoObject dell'oggetto Server .Additionally, an URN can be specified for the GetSmoObject method of the Server object. utilizzato per creare un'istanza dell'oggetto SMO.This is used to create an instance of the SMO object.

Funzionalità di SQL Server rappresentate in SMOSQL Server Features Represented in SMO

Partizionamento di tabelle e indiciTable and Index Partitioning

Il partizionamento di tabelle e indici consente di gestire la distribuzione di dati in tabelle e indici attraverso filegroup.Index Table Partitioning lets you manage the spread of data in tables and indexes across file groups. Questa nuova funzionalità viene rappresentata mediante oggetti SMO.This new feature is represented by SMO objects.

EndpointEndPoints

Le richieste di mirroring del database e SOAP vengono gestite dagli endpoint mediante l'oggetto Endpoint.SOAP and database mirroring requests are handled by endpoints using the Endpoint object.

Isolamento dello snapshot/controllo delle versioni a livello di rigaSnapshot Isolation/Row Level Versioning

L'isolamento dello snapshot (controllo delle versioni a livello di riga) è rappresentato da nuove proprietà dell'oggetto Database.Snapshot Isolation (row level versioning) is represented by new Database object properties.

Spazio dei nomi di XML Schema, indici XML e tipo di dati XMLXML Schema Namespace, XML Indexes and XML datatype

Gli spazi dei nomi di XML Schema sono rappresentati in SMO da una raccolta di oggetti.XML Schema Namespaces are represented in SMO by a collection of objects. Gli indici XML sono rappresentati in SMO da una proprietà dell'oggetto index .XML indexes are represented in SMO by an Index object property.

Miglioramenti della ricerca full-textFull-Text Search Enhancements

In SMO vengono forniti nuovi oggetti che rappresentano i miglioramenti alla ricerca full-text.New objects are provided in SMO that represent the enhancements to full text search.

Verifica paginaPage Verify

L'oggetto PageVerify rappresenta le opzioni di verifica pagina del database.The PageVerify object represents database page verify options.

Database snapshotSnapshot Databases

Un database snapshot è una copia di sola lettura di un database specifico in un momento specifico.A snapshot database is a read-only copy of a specified database as a specific point in time. Un database snapshot può essere specificato tramite la proprietà IsDatabaseSnapshot dell'oggetto Database.A snapshot database can be specified by using the IsDatabaseSnapshot property of the Database object.

Service BrokerService Broker

Broker di servizioService Broker e la relativa funzionalità sono rappresentati da un gruppo di oggettiand its functionality is represented by a group of objects

Miglioramenti degli indiciIndex Enhancements

I miglioramenti degli indici di SQL ServerSQL Server sono rappresentati da nuove proprietà nell'oggetto Index.SQL ServerSQL Server index enhancements are represented by new properties in the Index object.

Vedere ancheSee Also

Concetti di base relativi a RMO (Replication Management Objects)Replication Management Objects Concepts