We recommend using Visual Studio 2017
Server.SetDefaultInitFields Method (Type, StringCollection)
SQL Server 2012
Specifies the properties that are fetched when objects of the specified type are instantiated.
Namespace: Microsoft.SqlServer.Management.Smo
Assembly: Microsoft.SqlServer.Smo (in Microsoft.SqlServer.Smo.dll)
Parameters
- typeObject
- Type: System.Type
A Type system object value that specifies the type of object.
- fields
- Type: System.Collections.Specialized.StringCollection
A StringCollection system object value that specifies the property fields that are to be fetched when the object is initialized.
SMO optimization allows only the minimum properties to be loaded when an object is created. When uninitialized properties are accessed, SMO makes individual requests to load the information from the instance of SQL Server. You can use this method to adjust which properties are initialized for an object when it is first created to further optimize performance.
Visual Basic
'Connect to the local, default instance of SQL Server. Dim srv As Server srv = New Server 'Reference the AdventureWorks2012 database. Dim db As Database db = srv.Databases("AdventureWorks2012") '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 AdventureWorks2012. '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)
PowerShell
$srv = new-Object Microsoft.SqlServer.Management.Smo.Server("(local)") $db = New-Object Microsoft.SqlServer.Management.Smo.Database $db = $srv.Databases.Item("AdventureWorks2012") $tb = new-object Microsoft.SqlServer.Management.Smo.Table $typ = $tb.GetType() $sc = $srv.GetDefaultInitFields($typ) $srv.SetDefaultInitFields($typ, "CreateDate") foreach ($tb in $db.Tables) { Write-Host $tb.Schema,".",$tb.Name,".",$tb.CreateDate } $srv.SetDefaultInitFields($typ, $sc)
Show: