Megosztás a következőn keresztül:


Tulajdonságok beállítása – SMO

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSQL-adatbázis a Microsoft Fabricben

A tulajdonságok olyan értékek, amelyek leíró információkat tárolnak az objektumról. A Microsoft SQL Server konfigurációs beállításait például az Configuration objektum tulajdonságai jelölik. A tulajdonságok közvetlenül vagy közvetve is elérhetők a tulajdonsággyűjtemény használatával. A tulajdonságok közvetlen elérése a következő szintaxist használja:

objInstance.PropertyName

A tulajdonságértékek attól függően módosíthatók vagy kérhetők le, hogy a tulajdonság olvasási/írási vagy írási hozzáféréssel rendelkezik-e. Bizonyos tulajdonságokat is be kell állítani, mielőtt létre lehetne hozni egy objektumot. További információt az adott objektum SMO-referenciájában talál.

Note

A gyermekobjektum-gyűjtemények egy objektum tulajdonságaként jelennek meg. A Táblák gyűjtemény például egy kiszolgálóobjektum tulajdonsága. További információ: Gyűjtemények használata.

Az objektumok tulajdonságai a Tulajdonságok gyűjtemény tagjai. A Tulajdonságok gyűjtemény segítségével egy objektum minden tulajdonsága áthatolódhat.

Előfordulhat, hogy egy tulajdonság a következő okok miatt nem érhető el:

  • A kiszolgáló verziója nem támogatja a tulajdonságot, például ha olyan tulajdonságot próbál elérni, amely egy új SQL Server-funkciót jelöl az SQL Server régebbi verziójában.

  • A kiszolgáló nem biztosít adatokat a tulajdonsághoz, például ha olyan tulajdonságot próbál elérni, amely egy nem telepített SQL Server-összetevőt jelöl.

Ezeket a körülményeket az SMO-kivételek és UnknownPropertyException a PropertyCannotBeRetrievedException kivételekkel kezelheti.

Alapértelmezett inicializálási mezők beállítása

Az SMO optimalizálást végez az objektumok lekérésekor. Az optimalizálás a következő állapotok közötti automatikus skálázással minimalizálja a betöltött tulajdonságok számát:

  1. Részben betöltve. Amikor egy objektumra először hivatkoznak, legalább elérhető tulajdonságokkal rendelkezik (például név és séma).

  2. Teljesen feltöltve. Ha bármilyen tulajdonságra hivatkozik, a rendszer inicializálja és elérhetővé teszi a többi, gyorsan betölthető tulajdonságot.

  3. Sok memóriát használó tulajdonságok. A fennmaradó nem elérhető tulajdonságok sok memóriát Expensive használnak, és igaz tulajdonságértékük van (például DataSpaceUsage). Ezek a tulajdonságok csak akkor töltődnek be, ha kifejezetten hivatkoznak rá.

Ha az alkalmazás nem kér le további tulajdonságokat, a részben betöltött állapotban megadottakon kívül egy lekérdezést küld, amely lekéri ezeket az extra tulajdonságokat, és felskálázható a teljesen betöltött állapotra. Ez szükségtelen forgalmat okozhat az ügyfél és a kiszolgáló között. A metódus meghívásával SetDefaultInitFields további optimalizálási lehetőségek érhetők el. A SetDefaultInitFields metódus lehetővé teszi az objektum inicializálásakor betöltött tulajdonságok specifikációját.

A SetDefaultInitFields metódus beállítja az alkalmazás többi részének tulajdonságbetöltési viselkedését, vagy amíg vissza nem állítja. Az eredeti viselkedést mentheti a GetDefaultInitFields módszerrel, és szükség szerint visszaállíthatja.

Examples

A megadott kód példájának használatához ki kell választania a programozási környezetet, a programozási sablont és azt a programozási nyelvet, amelyben létre szeretné hozni az alkalmazást. További információ: Visual C# SMO-projekt létrehozása a Visual Studio .NET-.

Tulajdonság beolvasása és beállítása a Visual Basicben

Ez a példakód bemutatja, hogyan szerezheti be az EditionInformation objektum tulajdonságát, és hogyan állíthatja be a SqlExecutionModesConnectionContext tulajdonság tulajdonságát az enumerált típus ExecuteSql-tagjáraSqlExecutionModes.

'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

Tulajdonság beolvasása és beállítása a Visual C-ben#

Ez a példakód bemutatja, hogyan szerezheti be az EditionInformation objektum tulajdonságát, és hogyan állíthatja be a SqlExecutionModesConnectionContext tulajdonság tulajdonságát az enumerált típus ExecuteSql-tagjáraSqlExecutionModes.

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

Különböző tulajdonságok beállítása objektum létrehozása előtt a Visual Basicben

Ez a példakód bemutatja, hogyan állíthatja be közvetlenül az AnsiNullsStatusTable objektum tulajdonságát, és hogyan hozhat létre és adhat hozzá oszlopokat az Table objektum létrehozása előtt.

'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()

Különböző tulajdonságok beállítása objektum létrehozása előtt a Visual C-ben#

Ez a példakód bemutatja, hogyan állíthatja be közvetlenül az AnsiNullsStatusTable objektum tulajdonságát, és hogyan hozhat létre és adhat hozzá oszlopokat az Table objektum létrehozása előtt.

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

Egy objektum összes tulajdonságának iterálása a Visual Basicben

Ez a példakód végigfut az objektum Tulajdonságok gyűjteményén StoredProcedure , és megjeleníti őket a Visual Studio Kimenet képernyőjén.

A példában az Property objektum szögletes zárójelekbe lett helyezve, mivel ez egy Visual Basic kulcsszó is.

'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

Iterálás egy objektum minden tulajdonságán a Visual C-ben#

Ez a példakód végigfut az objektum Tulajdonságok gyűjteményén StoredProcedure , és megjeleníti őket a Visual Studio Kimenet képernyőjén.

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

Alapértelmezett inicializálási mezők beállítása a Visual Basicben

Ez a példakód bemutatja, hogyan minimalizálható az SMO-programban inicializált objektumtulajdonságok száma. Az objektum használatához tartalmaznia kell az using System.Collections.Specialized; utasítást StringCollection .

Az SQL Server Profiler használatával összehasonlíthatja az SQL Server-példánynak küldött számkimutatásokat ezzel az optimalizálással.

'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)

Alapértelmezett inicializálási mezők beállítása a Visual C-ben#

Ez a példakód bemutatja, hogyan minimalizálható az SMO-programban inicializált objektumtulajdonságok száma. Az objektum használatához tartalmaznia kell az using System.Collections.Specialized; utasítást StringCollection .

Az SQL Server Profiler használatával összehasonlíthatja az SQL Server-példánynak küldött számkimutatásokat ezzel az optimalizálással.

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