Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Banco de Dados SQL do Azure
Instância Gerenciada SQL do Azure
Banco de Dados SQL do Azure Synapse Analytics
no Microsoft Fabric
Propriedades são valores que armazenam informações descritivas sobre o objeto. Por exemplo, as opções de configuração do Configuration Microsoft SQL Server são representadas pelas propriedades do objeto. As propriedades podem ser acessadas direta ou indiretamente usando a coleção de propriedades. O acesso às 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 certas propriedades antes que um objeto possa ser criado. Para obter mais informações, consulte a referência SMO para o objeto específico.
Note
Coleções de objetos filho aparecem como a propriedade de um objeto. Por exemplo, a coleção Tables é uma propriedade de um objeto Server . Para obter mais informações, consulte Usando coleções.
As propriedades de um objeto são membros da coleção Properties. A coleção Properties pode ser usada para iterar através de cada propriedade de um objeto.
Às vezes, uma propriedade não está disponível pelos seguintes motivos:
A versão do servidor não oferece suporte à propriedade, como se você tentar 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ê tentar 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 SMO e PropertyCannotBeRetrievedException SMO.
Definindo 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 Name e Schema).
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 true (como DataSpaceUsage). Essas propriedades são carregadas somente quando especificamente referenciadas.
Se seu aplicativo buscar propriedades extras, além daquelas fornecidas no estado parcialmente carregado, ele enviará uma consulta para recuperar essas propriedades extras e será dimensionado para o estado totalmente carregado. Isso pode causar tráfego desnecessário entre o cliente e o servidor. Mais otimização pode ser alcançada 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 da propriedade para o resto do aplicativo ou até que ele seja redefinido. Você pode salvar o comportamento original usando o GetDefaultInitFields método e restaurá-lo conforme necessário.
Examples
Para usar qualquer exemplo de código fornecido, você terá que 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 Criar um projeto SMO do Visual C# no Visual Studio .NET.
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 SqlExecutionModesConnectionContext propriedade da propriedade para o membro ExecuteSql do SqlExecutionModes tipo enumerado.
'Connect to the local, default instance of SQL Server.
Dim srv As Server
srv = New Server
'Get a property.
Console.WriteLine(srv.Information.Version)
'Set a property.
srv.ConnectionContext.SqlExecutionModes = SqlExecutionModes.ExecuteSql
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 SqlExecutionModesConnectionContext propriedade da propriedade para o membro ExecuteSql 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 é criado no Visual Basic
Este exemplo de código mostra como definir diretamente a AnsiNullsStatus propriedade do objeto e como criar e adicionar colunas antes de Table criar o Table objeto.
'Connect to the local, default instance of SQL Server.
Dim srv As Server
srv = New Server
'Create a new table in the AdventureWorks2022 database.
Dim db As Database
db = srv.Databases("AdventureWorks2022")
Dim tb As Table
'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.
Dim c1 As Column
'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
Dim c2 As Column
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()
Definindo várias propriedades antes de um objeto é criado no Visual C#
Este exemplo de código mostra como definir diretamente a AnsiNullsStatus propriedade do objeto e como criar e adicionar colunas antes de Table criar o Table objeto.
{
//Connect to the local, default instance of SQL Server.
Server srv;
srv = new Server();
//Create a new table in the AdventureWorks2022 database.
Database db;
db = srv.Databases["AdventureWorks2022"];
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 através de todas as propriedades de um objeto no Visual Basic
Este exemplo de código itera através da coleção Properties do StoredProcedure objeto e os exibe na tela de saída do Visual Studio.
No exemplo, o Property objeto foi colocado entre parênteses quadrados porque também é uma palavra-chave do Visual Basic.
'Connect to the local, default instance of SQL Server.
Dim srv As Server
srv = New Server
'Set properties on the uspGetEmployeeManagers stored procedure on the AdventureWorks2022 database.
Dim db As Database
db = srv.Databases("AdventureWorks2022")
Dim sp As StoredProcedure
sp = db.StoredProcedures("uspGetEmployeeManagers")
sp.AnsiNullsStatus = False
sp.QuotedIdentifierStatus = False
'Iterate through the properties of the stored procedure and display.
'Note the Property object requires [] parentheses to distinguish it from the Visual Basic key word.
Dim p As [Property]
For Each p In sp.Properties
Console.WriteLine(p.Name & p.Value)
Next
Iterando através de todas as propriedades de um objeto no Visual C#
Este exemplo de código itera através da coleção Properties do StoredProcedure objeto e os exibe na tela de saída do Visual Studio.
{
//Connect to the local, default instance of SQL Server.
Server srv;
srv = new Server();
//Set properties on the uspGetEmployeeManagers stored procedure on the AdventureWorks2022 database.
Database db;
db = srv.Databases["AdventureWorks2022"];
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);
}
}
Definindo 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ê tem que incluir a using System.Collections.Specializedinstrução ; para usar o StringCollection objeto.
O SQL Server Profiler pode ser usado para comparar as instruções numéricas enviadas à instância do SQL Server com essa otimização.
'Connect to the local, default instance of SQL Server.
Dim srv As Server
srv = New Server
'Reference the AdventureWorks2022 database.
Dim db As Database
db = srv.Databases("AdventureWorks2022")
'Assign the Table object type to a System.Type object variable.
Dim tb As Table
Dim typ As Type
tb = New Table
typ = tb.GetType
'Assign the current default initialization fields for the Table object type to a
'StringCollection object variable.
Dim sc As StringCollection
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 AdventureWorks2022.
'Note that the improvement in performance can be viewed in SQL Profiler.
For Each tb In db.Tables
Console.WriteLine(tb.Schema + "." + tb.Name + " " + tb.CreateDate)
Next
'Set the default initialization fields for the Table object type back to the original settings.
srv.SetDefaultInitFields(typ, sc)
Definindo 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ê tem que incluir a using System.Collections.Specializedinstrução ; para usar o StringCollection objeto.
O SQL Server Profiler pode ser usado para comparar as instruções numéricas 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 AdventureWorks2022 database.
Database db;
db = srv.Databases["AdventureWorks2022"];
//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 AdventureWorks2022.
//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);
}