Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Propriedades são valores que armazenam informações descritivas sobre o objeto. Por exemplo, as Configuration opções de configuração do Microsoft SQL Server são representadas pelas propriedades do objeto. As propriedades podem ser acessadas direta ou indiretamente usando a coleção de propriedades. Acessar propriedades usa diretamente a seguinte sintaxe:
objInstance.PropertyName
Um valor de propriedade pode ser modificado ou recuperado dependendo se a propriedade tem acesso de leitura/gravação ou acesso somente leitura. Também é necessário definir determinadas propriedades antes que um objeto possa ser criado. Para obter mais informações, consulte a referência de SMO para o objeto específico.
Observação
Coleções de objetos filho aparecem como a propriedade de um objeto. Por exemplo, a Tables coleção é uma propriedade de um Server objeto. Para obter mais informações, consulte Como usar coleções.
As propriedades de um objeto são membros da coleção Properties. A coleção Properties pode ser usada para iterar em todas as propriedades de um objeto.
Às vezes, uma propriedade não está disponível pelos seguintes motivos:
A versão do servidor não dá suporte à propriedade, como se você tentasse acessar uma propriedade que representa um novo recurso do SQL Server em uma versão mais antiga do SQL Server.
O servidor não fornece dados para a propriedade, como se você tentasse acessar uma propriedade que representa um componente do SQL Server que não está instalado.
Você pode lidar com essas circunstâncias capturando as UnknownPropertyException exceções E SMO PropertyCannotBeRetrievedException .
Configurando campos de inicialização padrão
O SMO executa uma otimização ao recuperar objetos. A otimização minimiza o número de propriedades carregadas dimensionando automaticamente entre os seguintes estados:
Parcialmente carregado. Quando um objeto é referenciado pela primeira vez, ele tem um mínimo de propriedades disponíveis (como Nome e Esquema).
Totalmente carregado. Quando qualquer propriedade é referenciada, as propriedades restantes que são rápidas de carregar são inicializadas e disponibilizadas.
Propriedades que usam muita memória. As propriedades indisponíveis restantes usam muita memória e têm um Expensive valor de propriedade verdadeiro (como DataSpaceUsage). Essas propriedades são carregadas somente quando referenciadas especificamente.
Se o aplicativo buscar propriedades extras, além das fornecidas no estado parcialmente carregado, ele enviará uma consulta para recuperar essas propriedades extras e aumentará para o estado totalmente carregado. Isso pode causar tráfego desnecessário entre o cliente e o servidor. Mais otimização pode ser obtida chamando o SetDefaultInitFields método. O SetDefaultInitFields método permite a especificação das propriedades que são carregadas quando o objeto é inicializado.
O SetDefaultInitFields método define o comportamento de carregamento de propriedade para o restante do aplicativo ou até que seja redefinido. Você pode salvar o comportamento original usando o GetDefaultInitFields método e restaurá-lo conforme necessário.
Exemplos
Para usar qualquer exemplo de código fornecido, você precisará escolher o ambiente de programação, o modelo de programação e a linguagem de programação na qual criar seu aplicativo. Para obter mais informações, consulte "Como criar um projeto SMO do Visual Basic no Visual Studio .NET" ou "Como criar um projeto SMO do Visual C# no Visual Studio .NET" nos Manuais Online do SQL Server.
Obtendo e definindo uma propriedade no Visual Basic
Este exemplo de código mostra como obter a Edition propriedade do Information objeto e como definir a SqlExecutionModes propriedade da ConnectionContext propriedade para o ExecuteSql membro do SqlExecutionModes tipo enumerado.
Obtendo e definindo uma propriedade no Visual C#
Este exemplo de código mostra como obter a Edition propriedade do Information objeto e como definir a SqlExecutionModes propriedade da ConnectionContext propriedade para o ExecuteSql membro do SqlExecutionModes tipo enumerado.
{
//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;
}
Definindo várias propriedades antes de um objeto ser criado no Visual Basic
Este exemplo de código mostra como definir diretamente a AnsiNullsStatus propriedade do Table objeto e como criar e adicionar colunas antes de criar o Table objeto.
Definindo várias propriedades antes de um objeto ser criado no Visual C#
Este exemplo de código mostra como definir diretamente a AnsiNullsStatus propriedade do Table objeto e como criar e adicionar colunas antes de criar o Table objeto.
{
//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();
}
Iterando por todas as propriedades de um objeto no Visual Basic
Este exemplo de código itera por meio da Properties coleção do StoredProcedure objeto e os exibe na tela saída do Visual Studio.
No exemplo, o Property objeto foi colocado em parênteses quadrados porque também é uma palavra-chave do Visual Basic.
Iterando por todas as propriedades de um objeto no Visual C#
Este exemplo de código itera por meio da Properties coleção do StoredProcedure objeto e os exibe na tela saída do 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);
}
}
Configurando campos de inicialização padrão no Visual Basic
Este exemplo de código mostra como minimizar o número de propriedades de objeto inicializadas em um programa SMO. Você precisa incluir a using System.Collections.Specializedinstrução ; para usar o StringCollection objeto.
O SQL Server Profiler pode ser usado para comparar as instruções de número enviadas à instância do SQL Server com essa otimização.
Configurando campos de inicialização padrão no Visual C#
Este exemplo de código mostra como minimizar o número de propriedades de objeto inicializadas em um programa SMO. Você precisa incluir a using System.Collections.Specializedinstrução ; para usar o StringCollection objeto.
O SQL Server Profiler pode ser usado para comparar as instruções de número enviadas à instância do SQL Server com essa otimização.
{
//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);
}