Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
SQL-databas i Förhandsversion av Microsoft Fabric
Egenskaper är värden som lagrar beskrivande information om objektet. Konfigurationsalternativ för Microsoft SQL Server representeras till exempel av Configuration objektets egenskaper. Egenskaper kan nås antingen direkt eller indirekt med hjälp av egenskapssamlingen. När du kommer åt egenskaper används följande syntax direkt:
objInstance.PropertyName
Ett egenskapsvärde kan ändras eller hämtas beroende på om egenskapen har läs-/skrivåtkomst eller skrivskyddad åtkomst. Det är också nödvändigt att ange vissa egenskaper innan ett objekt kan skapas. Mer information finns i SMO-referensen för det specifika objektet.
Note
Samlingar med underordnade objekt visas som egenskapen för ett objekt. Till exempel är samlingen Tabeller en egenskap för ett Server-objekt . Mer information finns i Använda samlingar.
Egenskaperna för ett objekt är medlemmar i samlingen Egenskaper. Samlingen Egenskaper kan användas för att iterera genom varje egenskap för ett objekt.
Ibland är en egenskap inte tillgänglig av följande skäl:
Serverversionen stöder inte egenskapen, till exempel om du försöker komma åt en egenskap som representerar en ny SQL Server-funktion i en äldre version av SQL Server.
Servern tillhandahåller inte data för egenskapen, till exempel om du försöker komma åt en egenskap som representerar en SQL Server-komponent som inte är installerad.
Du kan hantera dessa omständigheter genom att fånga UnknownPropertyException och SMO-undantagen PropertyCannotBeRetrievedException .
Ange standardinitieringsfält
SMO utför en optimering när objekt hämtas. Optimeringen minimerar antalet egenskaper som läses in genom automatisk skalning mellan följande tillstånd:
Partially loaded. När ett objekt först refereras har det ett minimum av tillgängliga egenskaper (till exempel Namn och Schema).
Fully loaded. När någon egenskap refereras initieras de återstående egenskaperna som är snabba att läsa in och görs tillgängliga.
Egenskaper som använder mycket minne. De återstående otillgängliga egenskaperna använder mycket minne och har egenskapsvärdet Expensive true (till exempel DataSpaceUsage). Dessa egenskaper läses bara in när de refereras specifikt.
Om ditt program hämtar extra egenskaper, förutom de som anges i det delvis inlästa tillståndet, skickar det en fråga för att hämta dessa extra egenskaper och skalar upp till det fullständigt inlästa tillståndet. Detta kan orsaka onödig trafik mellan klienten och servern. Mer optimering kan uppnås genom att anropa SetDefaultInitFields metoden. Metoden SetDefaultInitFields tillåter specifikation av de egenskaper som läses in när objektet initieras.
Metoden SetDefaultInitFields anger egenskapens inläsningsbeteende för resten av programmet eller tills det återställs. Du kan spara det ursprungliga beteendet med hjälp GetDefaultInitFields av metoden och återställa det efter behov.
Examples
Om du vill använda ett kodexempel som tillhandahålls måste du välja programmeringsmiljö, programmeringsmallen och programmeringsspråket för att skapa ditt program. Mer information finns i Skapa ett Visual C# SMO-projekt i Visual Studio .NET.
Hämta och ange en egenskap i Visual Basic
Det här kodexemplet visar hur du hämtar Edition objektets Information egenskap och hur du anger SqlExecutionModes egenskapens egenskap ConnectionContext till ExecuteSql-medlemmen av den SqlExecutionModes uppräknade typen.
'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
Hämta och ange en egenskap i Visual C#
Det här kodexemplet visar hur du hämtar Edition objektets Information egenskap och hur du anger SqlExecutionModes egenskapens egenskap ConnectionContext till ExecuteSql-medlemmen av den SqlExecutionModes uppräknade typen.
{
//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;
}
Ange olika egenskaper innan ett objekt skapas i Visual Basic
Det här kodexemplet visar hur du direkt anger AnsiNullsStatus objektets Table egenskap och hur du skapar och lägger till kolumner innan du skapar Table objektet.
'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()
Ange olika egenskaper innan ett objekt skapas i Visual C#
Det här kodexemplet visar hur du direkt anger AnsiNullsStatus objektets Table egenskap och hur du skapar och lägger till kolumner innan du skapar Table objektet.
{
//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();
}
Iterera igenom alla egenskaper för ett objekt i Visual Basic
Det här kodexemplet itererar genom objektets egenskapssamling StoredProcedure och visar dem på Visual Studio-utdataskärmen.
I exemplet har objektet Property placerats i kvadratparenteser eftersom det också är ett Visual Basic-nyckelord.
'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
Iterera igenom alla egenskaper för ett objekt i Visual C#
Det här kodexemplet itererar genom objektets egenskapssamling StoredProcedure och visar dem på Visual Studio-utdataskärmen.
{
//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);
}
}
Ange standardinitieringsfält i Visual Basic
Det här kodexemplet visar hur du minimerar antalet objektegenskaper som initierats i ett SMO-program. Du måste inkludera - -instruktionen using System.Collections.Specializedför att använda objektet StringCollection .
SQL Server Profiler kan användas för att jämföra talinstruktionerna som skickas till instansen av SQL Server med den här optimeringen.
'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)
Ange standardinitieringsfält i Visual C#
Det här kodexemplet visar hur du minimerar antalet objektegenskaper som initierats i ett SMO-program. Du måste inkludera - -instruktionen using System.Collections.Specializedför att använda objektet StringCollection .
SQL Server Profiler kan användas för att jämföra talinstruktionerna som skickas till instansen av SQL Server med den här optimeringen.
{
//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);
}