Panoramica (SMO)

Si applica a:SQL ServerDatabase SQL diAzure Istanzagestita di SQL di Azure Azure Synapse Analytics

SQL Server Management Objects (SMO) sono oggetti progettati per la gestione a livello di codice di Microsoft SQL Server. È possibile usare SMO per compilare applicazioni di gestione di SQL Server personalizzate. Anche se SQL Server Management Studio è un'applicazione potente e estesa per la gestione di SQL Server, potrebbe verificarsi un momento in cui sarebbe meglio gestito da un'applicazione SMO.

Ad esempio, le applicazioni utente che controllano le attività di gestione di SQL Server potrebbero dover essere semplificate per soddisfare le esigenze dei nuovi utenti e ridurre i costi di training. Potrebbe essere necessario creare database DI SQL Server personalizzati o creare un'applicazione per creare e monitorare l'efficienza degli indici. Un'applicazione SMO può anche essere utilizzata per includere perfettamente hardware o software di terze parti nell'applicazione per la gestione di database.

Poiché SMO è compatibile con SQL Server 2005 (9.x) e versioni successive, è possibile gestire facilmente un ambiente con più versioni.

Le funzionalità in SMO includono quanto segue:

  • Modello a oggetti memorizzato nella cache e creazione ottimizzata delle istanze degli oggetti. Gli oggetti vengono caricati solo quando si fa riferimento. Le proprietà degli oggetti vengono caricate solo parzialmente quando si creano gli oggetti. Gli oggetti e le proprietà rimanenti vengono caricati quando viene fatto loro riferimento in modo diretto.

  • Esecuzione in batch di istruzioni Transact-SQL. Le istruzioni vengono eseguite in batch per migliorare le prestazioni della rete.

  • Acquisire istruzioni Transact-SQL. Consente l'acquisizione di qualsiasi operazione in uno script. Management Studio usa questa funzionalità per creare script di un'operazione anziché eseguirla immediatamente.

  • Gestione dei servizi DI SQL Server con il provider WMI. I servizi DI SQL Server possono essere avviati, arrestati e sospesi a livello di codice.

  • Generazione di script avanzata. Gli script Transact-SQL possono essere generati per ricreare oggetti di SQL Server che descrivono le relazioni con altri oggetti nell'istanza di SQL Server.

  • Utilizzo di nomi di risorse univoci (URN). Un URN consente di creare istanze di oggetti SMO e di farvi riferimento.

SMO rappresenta anche come nuovi oggetti o proprietà molte funzionalità e componenti introdotti in SQL Server 2005 (9.x). Queste nuove funzionalità e componenti includono:

  • Partizionamento di tabelle e indici per l'archiviazione di dati in uno schema di partizione. Per ulteriori informazioni, vedere Partitioned Tables and Indexes.

  • Endpoint HTTP per la gestione di richieste SOAP. Per altre informazioni, vedere Implementazione di endpoint.

  • Isolamento dello snapshot e controllo delle versioni a livello di riga per maggiore concorrenza. Per altre informazioni, vedere Uso dell'isolamento dello snapshot.

  • La raccolta di XML Schema, gli indici XML e il tipo di dati XML forniscono la convalida e l'archiviazione dei dati XML. Per altre informazioni, vedere Raccolte di XML Schema (SQL Server) e Uso di XML Schema.

  • Database di snapshot per la creazione di copie di database in sola lettura.

  • Supporto di Service Broker per la comunicazione basata su messaggi. Per altre informazioni, vedere SQL Server Service Broker.

  • Supporto sinonimo di più nomi di oggetti di database di SQL Server. Per altre informazioni, vedere Sinonimi (motore di database).

  • Gestione di Posta elettronica database che consente di creare server di posta elettronica, profili di posta elettronica e account di posta elettronica in SQL Server. Per altre informazioni, vedere Posta elettronica database.

  • Supporto di Server registrati per la registrazione di informazioni di connessione. Per altre informazioni, vedere Registrare i server.

  • Traccia e riproduzione di eventi di SQL Server. Per altre informazioni, vedere SQL Server Profiler, Traccia SQL, Riesecuzione distribuita di SQL Server ed eventi estesi.

  • Supporto di certificati e chiavi per il controllo di sicurezza. Per altre informazioni, vedere Gerarchia di crittografia.

  • Trigger DDL per l'aggiunta di funzionalità quando si verificano eventi DDL. Per altre informazioni, vedere Trigger DDL.

Lo spazio dei nomi SMO è Microsoft.SqlServer.Management.Smo. SMO viene implementato come assembly di Microsoft .NET Framework. Ciò significa che Common Language Runtime di Microsoft .NET Framework versione 2.0 deve essere installato prima di usare gli oggetti SMO. Gli assembly SMO vengono installati per impostazione predefinita nella Global Assembly Cache (GAC) con l'opzione SQL Server SDK. Gli assembly si trovano in C:\Programmi\Microsoft SQL Server\130\SDK\Assemblies. Per altre informazioni, vedere la documentazione di Visual Studio .NET Framework.

Classi SMO

Le classi SMO includono due categorie: classi di istanze e classi di utilità.

Classi di istanza

Le classi di istanza rappresentano oggetti di SQL Server, ad esempio server, database, tabelle, trigger e stored procedure. La ServerConnection classe viene usata per stabilire una connessione all'istanza di SQL Server e controllare la modalità di acquisizione dei comandi inviati.

Gli oggetti dell'istanza SMO formano una gerarchia che rappresenta la gerarchia di un server di database. Nella parte superiore sono le istanze di SQL Server, in cui sono i database e seguono con tabelle, colonne, trigger e così via. 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. In caso contrario, l'elemento figlio è rappresentato da un oggetto .

Classi di utilità

Le classi di utilità sono un gruppo di oggetti creato in modo esplicito per eseguire attività specifiche. Sono state divise in diverse gerarchie di oggetti in base alla funzione:

  • Classe di trasferimento. Utilizzata per trasferire lo schema e i dati in un altro database.

  • Classi di backup e ripristino. Utilizzate per eseguire il backup e il ripristino di database.

  • Classe di script. Utilizzata per creare file script per la rigenerazione di oggetti e le relative dipendenze.

Funzionalità di SMO

Prestazioni ottimizzate

L'architettura SMO è efficiente in termini di memoria perché gli oggetti vengono creati solo parzialmente in un primo momento e le informazioni minime sulle proprietà vengono richieste dal server. La creazione di un'istanza completa degli oggetti viene posticipata fino a quando non viene fatto riferimento all'oggetto in modo esplicito. 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à. La transizione tra la creazione di un'istanza parziale e un'istanza completa degli oggetti è visibile all'utente. Inoltre, alcune proprietà che utilizzano molta memoria non vengono mai recuperate, a meno che non venga fatto riferimento alla proprietà in modo esplicito. Un esempio è la proprietà Size della proprietà dell'oggetto Database. 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.

È possibile controllare la creazione di un'istanza in base all'ambiente di sistema. 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à.

Le classi di istanze, ovvero gli oggetti che rappresentano gli oggetti di database reali, possono avere tre livelli di creazione di un'istanza: 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. Gli stati tradizionali di creazione di istanze sono i tradizionali stati di creazione di istanze. 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. Lo stato parziale è lo stato predefinito per un oggetto al quale non viene fatto direttamente riferimento. 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.

Esecuzione dell'acquisizione

L'esecuzione diretta è il metodo di esecuzione standard. Le istruzioni vengono inviate a un'istanza di SQL Server direttamente in caso di incorrere. L'esecuzione dell'acquisizione rappresenta il metodo alternativo.

L'esecuzione dell'acquisizione consente di acquisire batch Transact-SQL che in genere verrebbero eseguiti. consentendo così al programmatore SMO di posticipare lo script, archiviarlo per un'esecuzione successiva o fornire un'anteprima per l'utente finale. Ad esempio, un database di creazione, una tabella di creazione e un'istruzione create index possono essere inviati in un batch e quindi eseguiti come tre passaggi sequenziali. Questa funzionalità viene controllata dall'utente tramite l'oggetto Server.

Provider WMI

In SMO sono inclusi gli oggetti del provider WMI, In questo modo il programmatore SMO dispone di un semplice modello a oggetti simile alle classi SMO, senza dover comprendere il modello di programmazione rappresentato dallo spazio dei nomi e i dettagli del provider WMI di SQL Server. Il provider WMI consente di configurare servizi, alias e librerie di rete client e server di SQL Server.

Scripting

In SMO, lo scripting è stato migliorato e spostato nella classe Scripter . La classe Scripter può individuare le dipendenze, comprendere le relazioni tra oggetti e abilitare la manipolazione della gerarchia delle dipendenze. L'oggetto scripting principale è l'oggetto Scripter . Sono inoltre disponibili diversi oggetti di supporto che gestiscono le dipendenze e rispondono agli eventi di stato e di errore.

L'oggetto Scripter supporta le opzioni di scripting avanzate seguenti:

  • Scripting semplice in una fase (crea lo script in un unico passaggio)

  • Scripting in tre fasi avanzato (crea lo script in tre passaggi; individuazione delle dipendenze, generazione di elenchi, generazione di script)

  • Individuazione dipendenze in due modi (consente l'individuazione di dipendenze o di dipendenti)

  • Risposta agli eventi di stato

  • Risposta agli eventi di errore

Nomi di risorse univoci

Un concetto chiave nell'utilizzo della libreria di oggetti SMO è rappresentato dai nomi di risorse univoci (URN, Unique Resource Name). L'URN utilizza una sintassi simile a XPath. XPath è un percorso della gerarchia utilizzato per specificare un oggetto nel quale ogni livello dispone di qualificatori e funzioni. In SMO l'URN dispone di due elementi: percorso e denominazione degli attributi con funzionalità limitata. Il percorso viene utilizzato per specificare il percorso dell'oggetto mentre la denominazione degli attributi consente un grado di filtraggio.

Un esempio di URN per un database è:

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

L'URN di un oggetto può essere recuperato facendo riferimento alla proprietà dell'URN. L'oggetto Scripter usa anche GLI URN come parametri che passano i riferimenti all'oggetto al metodo dell'oggetto Scripter . È inoltre possibile specificare un URN per il metodo GetSmoObject dell'oggetto Server . utilizzato per creare un'istanza dell'oggetto SMO.

Funzionalità di SQL Server rappresentate in SMO

Partizionamento di tabelle e indici

Il partizionamento di tabelle e indici consente di gestire la distribuzione di dati in tabelle e indici attraverso filegroup. Questa nuova funzionalità viene rappresentata mediante oggetti SMO.

Endpoint

Le richieste di mirroring del database e SOAP vengono gestite dagli endpoint mediante l'oggetto Endpoint.

Isolamento dello snapshot/Controllo delle versioni a livello di riga

L'isolamento dello snapshot (controllo delle versioni a livello di riga) è rappresentato da nuove proprietà dell'oggetto Database.

Spazio dei nomi XML Schema, indici XML e tipo di dati XML

Gli spazi dei nomi di XML Schema sono rappresentati in SMO da una raccolta di oggetti. Gli indici XML sono rappresentati in SMO da una proprietà dell'oggetto Index .

Miglioramenti della ricerca full-text

In SMO vengono forniti nuovi oggetti che rappresentano i miglioramenti alla ricerca full-text.

Verifica pagina

L'oggetto PageVerify rappresenta le opzioni di verifica pagina del database.

Database snapshot

Un database snapshot è una copia di sola lettura di un database specifico in un momento specifico. Un database snapshot può essere specificato tramite la proprietà IsDatabaseSnapshot dell'oggetto Database.

Service Broker

Service Broker e la relativa funzionalità sono rappresentati da un gruppo di oggetti

Miglioramenti dell'indice

I miglioramenti dell'indice di SQL Server sono rappresentati da nuove proprietà nell'oggetto Index .

Vedi anche

Replication Management Objects Concepts