Udostępnij za pośrednictwem


Właściwości ustawień — SMO

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsBaza danych SQL w usłudze Microsoft Fabric (wersja zapoznawcza)

Właściwości to wartości, które przechowują opisowe informacje o obiekcie. Na przykład opcje konfiguracji programu Microsoft SQL Server są reprezentowane przez Configuration właściwości obiektu. Dostęp do właściwości można uzyskać bezpośrednio lub pośrednio przy użyciu kolekcji właściwości. Uzyskiwanie dostępu do właściwości bezpośrednio używa następującej składni:

objInstance.PropertyName

Wartość właściwości można zmodyfikować lub pobrać w zależności od tego, czy właściwość ma dostęp do odczytu/zapisu, czy tylko do odczytu. Należy również ustawić pewne właściwości przed utworzeniem obiektu. Aby uzyskać więcej informacji, zobacz dokumentację SMO dla określonego obiektu.

Note

Kolekcje obiektów podrzędnych są wyświetlane jako właściwość obiektu. Na przykład kolekcja Tables jest właściwością obiektu Server . Aby uzyskać więcej informacji, zobacz Using Collections (Używanie kolekcji).

Właściwości obiektu są elementami członkowskimi kolekcji Właściwości. Kolekcja Właściwości może służyć do iterowania każdej właściwości obiektu.

Czasami właściwość nie jest dostępna z następujących powodów:

  • Wersja serwera nie obsługuje właściwości, takiej jak próba uzyskania dostępu do właściwości reprezentującej nową funkcję programu SQL Server w starszej wersji programu SQL Server.

  • Serwer nie dostarcza danych dla właściwości, takich jak próba uzyskania dostępu do właściwości reprezentującej składnik programu SQL Server, który nie jest zainstalowany.

Te okoliczności można obsłużyć, przechwytując UnknownPropertyException wyjątki I PropertyCannotBeRetrievedException SMO.

Ustawianie domyślnych pól inicjowania

SMO wykonuje optymalizację podczas pobierania obiektów. Optymalizacja minimalizuje liczbę właściwości załadowanych przez automatyczne skalowanie między następującymi stanami:

  1. Partially loaded. Gdy obiekt najpierw odwołuje się do niego, ma co najmniej dostępne właściwości (takie jak Nazwa i Schemat).

  2. Fully loaded. Po odwołaniu się do dowolnej właściwości pozostałe właściwości, które są szybkie do załadowania, są inicjowane i udostępniane.

  3. Właściwości korzystające z dużej ilości pamięci. Pozostałe niedostępne właściwości używają dużej ilości pamięci i mają Expensive wartość właściwości true (na przykład DataSpaceUsage). Te właściwości są ładowane tylko wtedy, gdy zostały przywoływane specjalnie.

Jeśli aplikacja pobiera dodatkowe właściwości, oprócz tych podanych w stanie częściowo załadowanym, przesyła zapytanie, aby pobrać te dodatkowe właściwości i skaluje w górę do w pełni załadowanego stanu. Może to spowodować niepotrzebny ruch między klientem a serwerem. Więcej optymalizacji można osiągnąć, wywołując metodę SetDefaultInitFields . Metoda SetDefaultInitFields umożliwia określenie właściwości ładowanych podczas inicjowania obiektu.

Metoda SetDefaultInitFields ustawia zachowanie ładowania właściwości dla pozostałej części aplikacji lub do momentu jego zresetowania. Oryginalne zachowanie można zapisać przy użyciu GetDefaultInitFields metody i przywrócić je zgodnie z potrzebami.

Examples

Aby użyć dowolnego podanego przykładu kodu, musisz wybrać środowisko programowania, szablon programowania i język programowania, w którym ma zostać utworzona aplikacja. Aby uzyskać więcej informacji, zobacz Create a Visual C# SMO Project in Visual Studio .NET(Tworzenie projektu SMO w programie Visual Studio .NET).

Pobieranie i ustawianie właściwości w Visual Basic

W tym przykładzie kodu pokazano, jak pobrać Edition właściwość Information obiektu i jak ustawić SqlExecutionModes właściwość właściwości ConnectionContext na element członkowski ExecuteSql typu wyliczonego SqlExecutionModes .

'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

Pobieranie i ustawianie właściwości w visual C#

W tym przykładzie kodu pokazano, jak pobrać Edition właściwość Information obiektu i jak ustawić SqlExecutionModes właściwość właściwości ConnectionContext na element członkowski ExecuteSql typu wyliczonego 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;   
}  

Ustawianie różnych właściwości przed utworzeniem obiektu w Visual Basic

W tym przykładzie kodu pokazano, jak bezpośrednio ustawić AnsiNullsStatus właściwość Table obiektu oraz jak utworzyć i dodać kolumny przed utworzeniem Table obiektu.

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

Ustawianie różnych właściwości przed utworzeniem obiektu w visual C#

W tym przykładzie kodu pokazano, jak bezpośrednio ustawić AnsiNullsStatus właściwość Table obiektu oraz jak utworzyć i dodać kolumny przed utworzeniem Table obiektu.

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

Iterowanie za pomocą wszystkich właściwości obiektu w Visual Basic

Ten przykładowy kod iteruje po kolekcji StoredProcedureWłaściwości obiektu i wyświetla je na ekranie Danych wyjściowych programu Visual Studio.

W tym przykładzie Property obiekt został umieszczony w nawiasach kwadratowych, ponieważ jest również słowem kluczowym Języka 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

Iterowanie za pomocą wszystkich właściwości obiektu w visual C#

Ten przykładowy kod iteruje po kolekcji StoredProcedureWłaściwości obiektu i wyświetla je na ekranie Danych wyjściowych programu 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);   
  }   
}  

Ustawianie domyślnych pól inicjowania w Visual Basic

W tym przykładzie kodu pokazano, jak zminimalizować liczbę właściwości obiektu zainicjowanych w programie SMO. Należy dołączyć instrukcję using System.Collections.Specialized; , aby użyć StringCollection obiektu .

Program SQL Server Profiler może służyć do porównywania instrukcji liczb wysyłanych do wystąpienia programu SQL Server z tą optymalizacją.

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

Ustawianie domyślnych pól inicjowania w visual C#

W tym przykładzie kodu pokazano, jak zminimalizować liczbę właściwości obiektu zainicjowanych w programie SMO. Należy dołączyć instrukcję using System.Collections.Specialized; , aby użyć StringCollection obiektu .

Program SQL Server Profiler może służyć do porównywania instrukcji liczb wysyłanych do wystąpienia programu SQL Server z tą optymalizacją.

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