Export (0) Print
Expand All

AffinityInfo Class

The AffinityInfo object represents the Affinity settings for all CPUs and NUMA nodes on an Instance of SQL Server. Access to the AffinityInfo object is provided though the Server object.

System.Object
  Microsoft.SqlServer.Management.Smo.AffinityInfo

Namespace:  Microsoft.SqlServer.Management.Smo
Assembly:  Microsoft.SqlServer.Smo (in Microsoft.SqlServer.Smo.dll)

public sealed class AffinityInfo : IAlterable, 
	IScriptable

The AffinityInfo type exposes the following members.

  NameDescription
Public propertyAffinityTypeGets or Sets the AffinityType() member of the AffinityInfo class. Valid values are Auto or Manual.
Public propertyCpusThe Cpus() member is a collection that represents the CPU settings for all CPUs on an Instance of SQL Server.
Public propertyNumaNodesThe NumaNode() member is a collection that contains the NUMA node settings for an Instance of SQL Server.
Public propertyParentThis gets the parent object of the AffinityInfo object. This value is the same as the Server object that contains the AffinityInfo() member.
Top

  NameDescription
Public methodAlterThis method updates the server with the current values in the AffinityInfo class.
Public methodEquals (Inherited from Object.)
Protected methodFinalize (Inherited from Object.)
Public methodGetHashCode (Inherited from Object.)
Public methodGetType (Inherited from Object.)
Protected methodMemberwiseClone (Inherited from Object.)
Public methodRefreshThis method fills in the Cpus() and NumaNode() with the local server settings.
Public methodScript()Generates a Transact-SQL script that can be used to re-create the instance of SQL Server affinity settings as specified in the AffinityInfo object.
Public methodScript(ScriptingOptions)Generates a Transact-SQL script that can be used to re-create the instance of SQL Server affinity settings as specified in the AffinityInfo object.
Public methodToString (Inherited from Object.)
Top

To get AffinityInfo object properties, users can be a member of the public fixed server role.

To set any AffinityInfo object properties and run the Alter method, users must have ALTER permission on the database.

To create a AffinityInfo object, users must have ALTER ANY APPLICATION role permission on the parent database.

To drop an AffinityInfo object, users must be the owner of the application role or have ALTER ANY APPLICATION role permission on the parent database.

To grant, deny, and revoke permission on the AffinityInfo object, users must have CONTROL permission on the application role.

This example shows you how to set all of the CPU’s on an instance of SQL Server to hard affinity.

C#

using System;
using Microsoft.SqlServer.Management.Smo;

namespace samples
{
    class Program
    {
        static void Main(string[] args)
        {
            Server dbServer = new Server("(local)");
            dbServer.AffinityInfo.AffinityType = AffinityType.Manual;

            foreach (Cpu cpu in dbServer.AffinityInfo.Cpus)
                cpu.AffinityMask = true;

            dbServer.AffinityInfo.Alter();
        }
    }
}

Powershell

//Create the server. 
$dbServer = new-Object Microsoft.SqlServer.Management.Smo.Server("(local)")

//Set the Affinity Type
$dbServer.AffinityInfo.AffinityType = [Microsoft.SqlServer.Management.Smo.AffinityType]'Manual'

//Set each CPU to Hard affinity and update
foreach ($cpu In $dbServer.AffinityInfo.Cpus)
{
   $cpu.AffinityMask = $True
   $dbServer.AffinityInfo.Alter() 
}

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Was this page helpful?
(1500 characters remaining)
Thank you for your feedback

Community Additions

ADD
Show:
© 2014 Microsoft