Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Le proprietà sono valori che archiviano informazioni descrittive sull'oggetto. Ad esempio, le opzioni di configurazione di Microsoft SQL Server sono rappresentate dalle Configuration proprietà dell'oggetto. È possibile accedere alle proprietà direttamente o indirettamente usando la raccolta di proprietà. L'accesso alle proprietà usa direttamente la sintassi seguente:
objInstance.PropertyName
Un valore della proprietà può essere modificato o recuperato a seconda che la proprietà abbia accesso in lettura/scrittura o accesso in sola lettura. È inoltre necessario impostare determinate proprietà prima di poter creare un oggetto. Per altre informazioni, vedere le informazioni di riferimento su SMO per l'oggetto specifico.
Annotazioni
Le raccolte di oggetti figlio vengono visualizzate come proprietà di un oggetto . Ad esempio, l'insieme Tables è una proprietà di un Server oggetto . Per altre informazioni, vedere Uso di raccolte.
Le proprietà di un oggetto sono membri dell'insieme Properties. L'insieme Properties può essere utilizzato per scorrere ogni proprietà di un oggetto .
A volte una proprietà non è disponibile per i motivi seguenti:
La versione del server non supporta la proprietà , ad esempio se si tenta di accedere a una proprietà che rappresenta una nuova funzionalità di SQL Server in una versione precedente di SQL Server.
Il server non fornisce dati per la proprietà, ad esempio se si tenta di accedere a una proprietà che rappresenta un componente di SQL Server non installato.
È possibile gestire queste circostanze rilevando le UnknownPropertyException eccezioni SMO e PropertyCannotBeRetrievedException .
Impostazione dei campi di inizializzazione predefiniti
SMO esegue un'ottimizzazione durante il recupero di oggetti. L'ottimizzazione riduce al minimo il numero di proprietà caricate automaticamente tra gli stati seguenti:
Caricato parzialmente. Quando viene fatto riferimento per la prima volta a un oggetto, sono disponibili almeno proprietà, ad esempio Nome e Schema.
Completamente caricato. Quando viene fatto riferimento a una proprietà, le proprietà rimanenti che sono veloci da caricare vengono inizializzate e rese disponibili.
Proprietà che usano molta memoria. Le proprietà rimanenti non disponibili usano molta memoria e hanno un Expensive valore della proprietà true ,ad esempio DataSpaceUsage. Queste proprietà vengono caricate solo quando si fa riferimento in modo specifico.
Se l'applicazione recupera proprietà aggiuntive, oltre a quelle fornite nello stato parzialmente caricato, invia una query per recuperare queste proprietà aggiuntive e aumenta lo stato di caricamento completo. Ciò può causare traffico non necessario tra il client e il server. È possibile ottenere un'ulteriore ottimizzazione chiamando il SetDefaultInitFields metodo . Il SetDefaultInitFields metodo consente di specificare le proprietà caricate quando l'oggetto viene inizializzato.
Il SetDefaultInitFields metodo imposta il comportamento di caricamento della proprietà per il resto dell'applicazione o fino a quando non viene reimpostato. È possibile salvare il comportamento originale usando il GetDefaultInitFields metodo e ripristinarlo in base alle esigenze.
Esempi
Per usare qualsiasi esempio di codice fornito, è necessario scegliere l'ambiente di programmazione, il modello di programmazione e il linguaggio di programmazione in cui creare l'applicazione. Per altre informazioni, vedere "Procedura: Creare un progetto SMO di Visual Basic in Visual Studio .NET" o "Procedura: Creare un progetto SMO visual C# in Visual Studio .NET" nella documentazione online di SQL Server.
Recupero e impostazione di una proprietà in Visual Basic
In questo esempio di codice viene illustrato come ottenere la Edition proprietà dell'oggetto Information e come impostare la SqlExecutionModes proprietà della ConnectionContext proprietà sul ExecuteSql membro del SqlExecutionModes tipo enumerato.
Recupero e impostazione di una proprietà in Visual C#
In questo esempio di codice viene illustrato come ottenere la Edition proprietà dell'oggetto Information e come impostare la SqlExecutionModes proprietà della ConnectionContext proprietà sul ExecuteSql membro del SqlExecutionModes tipo enumerato.
{
//Connect to the local, default instance of SQL Server.
Server srv;
srv = new Server();
//Get a property.
Console.WriteLine(srv.Information.Version);
//Set a property.
srv.ConnectionContext.SqlExecutionModes = SqlExecutionModes.ExecuteSql;
}
Impostazione di varie proprietà prima della creazione di un oggetto in Visual Basic
Questo esempio di codice illustra come impostare direttamente la AnsiNullsStatus proprietà dell'oggetto Table e come creare e aggiungere colonne prima di creare l'oggetto Table .
Impostazione di varie proprietà prima della creazione di un oggetto in Visual C#
Questo esempio di codice illustra come impostare direttamente la AnsiNullsStatus proprietà dell'oggetto Table e come creare e aggiungere colonne prima di creare l'oggetto Table .
{
//Connect to the local, default instance of SQL Server.
Server srv;
srv = new Server();
//Create a new table in the AdventureWorks2012 database.
Database db;
db = srv.Databases("AdventureWorks2012");
Table tb;
//Specify the parent database, table schema, and the table name in the constructor.
tb = new Table(db, "Test_Table", "HumanResources");
//Add columns because the table requires columns before it can be created.
Column c1;
//Specify the parent table, the column name, and data type in the constructor.
c1 = new Column(tb, "ID", DataType.Int);
tb.Columns.Add(c1);
c1.Nullable = false;
c1.Identity = true;
c1.IdentityIncrement = 1;
c1.IdentitySeed = 0;
Column c2;
c2 = new Column(tb, "Name", DataType.NVarChar(100));
c2.Nullable = false;
tb.Columns.Add(c2);
tb.AnsiNullsStatus = true;
//Create the table on the instance of SQL Server.
tb.Create();
}
Iterazione di tutte le proprietà di un oggetto in Visual Basic
Questo esempio di codice scorre l'insieme Properties dell'oggetto StoredProcedure e li visualizza nella schermata Output di Visual Studio.
Nell'esempio l'oggetto Property è stato inserito tra parentesi quadre perché è anche una parola chiave di Visual Basic.
Iterazione di tutte le proprietà di un oggetto in Visual C#
Questo esempio di codice scorre l'insieme Properties dell'oggetto StoredProcedure e li visualizza nella schermata Output di Visual Studio.
{
//Connect to the local, default instance of SQL Server.
Server srv;
srv = new Server();
//Set properties on the uspGetEmployeedManagers stored procedure on the AdventureWorks2012 database.
Database db;
db = srv.Databases("AdventureWorks2012");
StoredProcedure sp;
sp = db.StoredProcedures("uspGetEmployeeManagers");
sp.AnsiNullsStatus = false;
sp.QuotedIdentifierStatus = false;
//Iterate through the properties of the stored procedure and display.
Property p;
foreach ( p in sp.Properties) {
Console.WriteLine(p.Name + p.Value);
}
}
Impostazione dei campi di inizializzazione predefiniti in Visual Basic
In questo esempio di codice viene illustrato come ridurre al minimo il numero di proprietà dell'oggetto inizializzate in un programma SMO. È necessario includere l'istruzione using System.Collections.Specialized; per usare l'oggetto StringCollection .
SQL Server Profiler può essere usato per confrontare le istruzioni number inviate all'istanza di SQL Server con questa ottimizzazione.
Impostazione dei campi di inizializzazione predefiniti in Visual C#
In questo esempio di codice viene illustrato come ridurre al minimo il numero di proprietà dell'oggetto inizializzate in un programma SMO. È necessario includere l'istruzione using System.Collections.Specialized; per usare l'oggetto StringCollection .
SQL Server Profiler può essere usato per confrontare le istruzioni number inviate all'istanza di SQL Server con questa ottimizzazione.
{
//Connect to the local, default instance of SQL Server.
Server srv;
srv = new Server();
//Reference the AdventureWorks2012 database.
Database db;
db = srv.Databases("AdventureWorks2012");
//Assign the Table object type to a System.Type object variable.
Table tb;
Type typ;
tb = new Table();
typ = tb.GetType;
//Assign the current default initialization fields for the Table object type to a
//StringCollection object variable.
StringCollection sc;
sc = srv.GetDefaultInitFields(typ);
//Set the default initialization fields for the Table object type to the CreateDate property.
srv.SetDefaultInitFields(typ, "CreateDate");
//Retrieve the Schema, Name, and CreateDate properties for every table in AdventureWorks2012.
//Note that the improvement in performance can be viewed in SQL Server Profiler.
foreach ( tb in db.Tables) {
Console.WriteLine(tb.Schema + "." + tb.Name + " " + tb.CreateDate);
}
//Set the default initialization fields for the Table object type back to the original settings.
srv.SetDefaultInitFields(typ, sc);
}