Share via


Définition de propriétés

Les propriétés sont des valeurs qui stockent des informations descriptives sur l'objet. Par exemple, les options de configuration microsoft SQL Server sont représentées par les propriétés de l’objetConfiguration. Les propriétés sont accessibles soit directement, soit indirectement par le biais de la collection de propriétés. L'accès aux propriétés utilise directement la syntaxe suivante :

objInstance.PropertyName

Une valeur de propriété peut être modifiée ou récupérée selon que la propriété dispose d'un accès en lecture/écriture ou d'un accès en lecture seule. Il est également nécessaire de définir certaines propriétés avant qu'un objet ne puisse être créé. Pour plus d'informations, consultez la référence SMO pour l'objet particulier.

Notes

Les collections d'objets enfants apparaissent en tant que propriété d'un objet. Par exemple, la collection Tables est une propriété d'un objet Server. Pour plus d'informations, voir Using Collections.

Les propriétés d'un objet sont membres de la collection Properties. La collection Properties peut être utilisée pour parcourir chaque propriété d'un objet.

Parfois, une propriété n'est pas disponible pour les raisons suivantes :

  • La version du serveur ne prend pas en charge la propriété, par exemple si vous essayez d’accéder à une propriété qui représente une nouvelle fonctionnalité SQL Server sur une version antérieure de SQL Server.

  • Le serveur ne fournit pas de données pour la propriété, par exemple si vous essayez d’accéder à une propriété qui représente un composant SQL Server qui n’est pas installé.

Vous pouvez gérer ces circonstances en interceptant les exceptions SMO UnknownPropertyException et PropertyCannotBeRetrievedException.

Définition des champs d'initialisation par défaut

SMO effectue une optimisation lors de la récupération d'objets. L'optimisation réduit le nombre de propriétés chargées en procédant automatiquement à une mise à l'échelle entre les états suivants :

  1. Partiellement chargé. Lorsqu'un objet est référencé pour la première fois, il dispose d'un nombre minimal de propriétés (telles que Nom et Schéma).

  2. Complètement chargé. Lorsqu'une propriété est référencée, les propriétés restantes à chargement rapide sont initialisées et mises à disposition.

  3. Propriétés qui utilisent beaucoup de mémoire. Les propriétés non disponibles restantes utilisent beaucoup de mémoire et la valeur de la propriété Expensive est True (par exemple DataSpaceUsage). Ces propriétés sont chargées uniquement lorsqu'elles sont spécifiquement référencées.

Si votre application extrait des propriétés supplémentaires, en plus de celles fournies dans l'état partiellement chargé, elle envoie une requête pour récupérer ces propriétés supplémentaires et passe à l'état complètement chargé. Cela peut générer un trafic inutile entre le client et le serveur. Vous pouvez bénéficier d'une meilleure optimisation en appelant la méthode SetDefaultInitFields. La méthode SetDefaultInitFields vous permet de spécifier des propriétés qui sont chargées lors de l'initialisation de l'objet.

La méthode SetDefaultInitFields définit le comportement de chargement des propriétés pour le reste de l'application ou jusqu'à ce qu'elle soit réinitialisée. Vous pouvez enregistrer le comportement d'origine en utilisant la méthode GetDefaultInitFields et en la restaurant selon les besoins.

Exemples

Pour utiliser un exemple de code qui est fourni, vous devrez choisir l'environnement de programmation, le modèle de programmation et le langage de programmation dans lequel créer votre application. Pour plus d'informations, consultez « Procédure : créer un projet Visual Basic SMO dans Visual Studio .NET » ou « Procédure : créer un projet Visual C# SMO dans Visual Studio .NET » dans la documentation en ligne de SQL Server.

Obtention et définition d'une propriété en Visual Basic

Cet exemple de code montre comment obtenir la propriété Edition de l'objet Information et comment attribuer à la propriété SqlExecutionModes de la propriété ConnectionContext le membre ExecuteSql du type énuméré SqlExecutionModes.

Obtention et définition d'une propriété en Visual C#

Cet exemple de code montre comment obtenir la propriété Edition de l'objet Information et comment attribuer à la propriété SqlExecutionModes de la propriété ConnectionContext le membre ExecuteSql du type énuméré SqlExecutionModes.

{   
//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;   
}  

Définition de différentes propriétés avant la création d'un objet en Visual Basic

Cet exemple de code montre comment définir directement la propriété AnsiNullsStatus de l'objet Table, et comment créer et ajouter des colonnes avant de créer l'objet Table.

Définition de différentes propriétés avant la création d'un objet en Visual C#

Cet exemple de code montre comment définir directement la propriété AnsiNullsStatus de l'objet Table, et comment créer et ajouter des colonnes avant de créer l'objet 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();   
}  

Parcours de toutes les propriétés d'un objet en Visual Basic

Cet exemple de code itère dans la Properties collection de l’objet StoredProcedure et l’affiche sur l’écran Sortie de Visual Studio.

Dans l’exemple, l’objet Property a été placé entre parenthèses carrées, car il s’agit également d’un mot clé Visual Basic.

Parcours de toutes les propriétés d'un objet en Visual C#

Cet exemple de code itère dans la Properties collection de l’objet StoredProcedure et l’affiche sur l’écran Sortie de 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);   
  }   
}  

Définition des champs d'initialisation par défaut en Visual Basic

Cet exemple de code montre comment réduire le nombre de propriétés d'objet initialisées dans un programme SMO. Vous devez inclure l'instruction using System.Collections.Specialized pour utiliser l'objet StringCollection.

SQL Server Profiler permet de comparer les instructions de nombre envoyées au instance de SQL Server avec cette optimisation.

Définition des champs d'initialisation par défaut en Visual C#

Cet exemple de code montre comment réduire le nombre de propriétés d'objet initialisées dans un programme SMO. Vous devez inclure l'instruction using System.Collections.Specialized pour utiliser l'objet StringCollection.

SQL Server Profiler permet de comparer les instructions de nombre envoyées au instance de SQL Server avec cette optimisation.

{   
//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);   
}