Soft-NUMA (SQL Server)Soft-NUMA (SQL Server)

Anwendungsbereich:Applies to: JaSQL ServerSQL Server (alle unterstützten Versionen) yesSQL ServerSQL Server (all supported versions) Anwendungsbereich:Applies to: JaSQL ServerSQL Server (alle unterstützten Versionen) yesSQL ServerSQL Server (all supported versions)

Moderne Prozessoren verfügen über mehrere Kerne pro Socket.Modern processors have multiple cores per socket. Jeder Socket wird in der Regel als ein einzelner NUMA-Knoten dargestellt.Each socket is represented, usually, as a single NUMA node. Die SQL Server-Datenbank-Engine partitioniert pro NUMA-Knoten verschiedene interne Strukturen und Dienstthreads für Partitionen.The SQL Server database engine partitions various internal structures and partitions service threads per NUMA node. Bei Prozessoren mit zehn oder mehr Kernen pro Socket, erhöht die Verwendung von Software-NUMA zum Teilen von NUMA-Hardwareknoten in der Regel die Skalierbarkeit und die Leistung, da Prozessoren mit zehn oder mehr Kernen pro Socket verwendet werden.With processors containing 10 or more cores per socket, using software NUMA to split hardware NUMA nodes generally increases scalability and performance. Vor SQL Server 2014 (12.x)SQL Server 2014 (12.x) SP2 war beim softwarebasierten NUMA (Soft-NUMA) eine Bearbeitung der Registrierung erforderlich, um eine Affinitätsmaske für die Knotenkonfiguration hinzuzufügen. Außerdem wurde der softwarebasierte NUMA auf Hostebene statt über eine Instanz konfiguriert.Prior to SQL Server 2014 (12.x)SQL Server 2014 (12.x) SP2, software-based NUMA (soft-NUMA) required you to edit the registry to add a node configuration affinity mask, and was configured at the host level, rather than per instance. Ab SQL Server 2014 (12.x)SQL Server 2014 (12.x) SP2 und SQL Server 2016 (13.x)SQL Server 2016 (13.x) wird Soft-NUMA automatisch auf die Datenbankinstanzebene konfiguriert, wenn der SQL Server-Datenbank-EngineSQL Server Database Engine-Dienst gestartet wird.Starting with SQL Server 2014 (12.x)SQL Server 2014 (12.x) SP2 and SQL Server 2016 (13.x)SQL Server 2016 (13.x), soft-NUMA is configured automatically at the database-instance level when the SQL Server-Datenbank-EngineSQL Server Database Engine service starts.

Hinweis

Hot-Add-Prozessoren werden von Soft-NUMA nicht unterstützt.Hot-add processors are not supported by soft-NUMA.

Automatischer Soft-NUMAAutomatic Soft-NUMA

Immer wenn SQL Server-Datenbank-EngineSQL Server Database Engine in SQL Server 2016 (13.x)SQL Server 2016 (13.x) beim Start mehr als acht physische CPU-Kerne pro NUMA-Knoten oder Socket erkennt, werden standardmäßig automatisch Soft-NUMA-Knoten erstellt.With SQL Server 2016 (13.x)SQL Server 2016 (13.x), whenever the SQL Server-Datenbank-EngineSQL Server Database Engine detects more than eight physical cores per NUMA node or socket at startup, soft-NUMA nodes are created automatically by default. Prozessorkerne mit Hyperthreading werden beim Zählen der physischen Kerne auf einem Knoten nicht unterschieden.Hyper-threaded processor cores are not differentiated when counting physical cores in a node. Wenn mehr als acht physische Prozessoren pro Socket erkannt werden, erstellt SQL Server-Datenbank-EngineSQL Server Database Engine Soft-NUMA-Knoten, die im Idealfall acht Kerne enthalten, jedoch auch fünf bis neun logische Kerne pro Knoten enthalten können.When the detected number of physical cores is more than eight per socket, the SQL Server-Datenbank-EngineSQL Server Database Engine creates soft-NUMA nodes that ideally contain eight cores, but can go down to five or up to nine logical cores per node. Die Größe des Hardwareknotens kann durch eine CPU-Affinitätsmaske eingeschränkt werden.The size of the hardware node can be limited by a CPU affinity mask. Die Anzahl von NUMA-Knoten übersteigt die maximale Anzahl von unterstützten NUMA-Knoten nie.The number of NUMA nodes never exceeds the maximum number of supported NUMA nodes.

Sie können Soft-NUMA mithilfe der ALTER SERVER CONFIGURATION (Transact-SQL)-Anweisung mit dem Argument SET SOFTNUMA deaktivieren oder erneut aktivieren.You can disable or re-enable soft-NUMA using the ALTER SERVER CONFIGURATION (Transact-SQL) statement with the SET SOFTNUMA argument. Nach der Änderung des Werts dieser Einstellung ist ein Neustart der Datenbank-Engine erforderlich, damit diese wirksam wird.Changing the value of this setting requires a restart of the database engine to take effect.

Die folgende Abbildung stellt die Art von Informationen zu Soft-NUMA dar, die im SQL Server-Fehlerprotokoll angezeigt werden, wenn SQL ServerSQL Server NUMA-Hardwareknoten mit mehr als acht physischen Prozessoren pro Knoten oder Socket erkennt.The figure below shows the type of information regarding soft-NUMA that you see in the SQL Server error log, when SQL ServerSQL Server detects hardware NUMA nodes with greater than eight physical cores per each node or socket.

2016-11-14 13:39:43.17 Server      SQL Server detected 2 sockets with 12 cores per socket and 24 logical processors per socket, 48 total logical processors; using 48 logical processors based on SQL Server licensing. This is an informational message; no user action is required.     
2016-11-14 13:39:43.35 Server      Automatic soft-NUMA was enabled because SQL Server has detected hardware NUMA nodes with greater than 8 physical cores.     
2016-11-14 13:39:43.63 Server      Node configuration: node 0: CPU mask: 0x0000000000555555:0 Active CPU mask: 0x0000000000555555:0. This message provides a description of the NUMA configuration for this computer. This is an informational message only. No user action is required.    
2016-11-14 13:39:43.63 Server      Node configuration: node 1: CPU mask: 0x0000000000aaaaaa:0 Active CPU mask: 0x0000000000aaaaaa:0. This message provides a description of the NUMA configuration for this computer. This is an informational message only. No user action is required.    
2016-11-14 13:39:43.63 Server      Node configuration: node 2: CPU mask: 0x0000555555000000:0 Active CPU mask: 0x0000555555000000:0. This message provides a description of the NUMA configuration for this computer. This is an informational message only. No user action is required.     
2016-11-14 13:39:43.63 Server      Node configuration: node 3: CPU mask: 0x0000aaaaaa000000:0 Active CPU mask: 0x0000aaaaaa000000:0. This message provides a description of the NUMA configuration for this computer. This is an informational message only. No user action is required.   

Hinweis

Verwenden Sie ab SQL Server 2014 (12.x)SQL Server 2014 (12.x) SP2 das Ablaufverfolgungsflag 8079, um SQL ServerSQL Server die Nutzung der automatischen Soft-NUMA zu ermöglichen.Starting with SQL Server 2014 (12.x)SQL Server 2014 (12.x) SP2, use trace flag 8079 to allow SQL ServerSQL Server to use Automatic Soft-NUMA. Ab SQL Server 2016 (13.x)SQL Server 2016 (13.x) wird dieses Verhalten durch die Engine gesteuert, und das Ablaufverfolgungsflag 8079 hat keine Auswirkungen.Starting with SQL Server 2016 (13.x)SQL Server 2016 (13.x) this behavior is controlled by the engine and trace flag 8079 has no effect. Weitere Informationen finden Sie unter DBCC TRACEON – Ablaufverfolgungsflags.For more information, see DBCC TRACEON - Trace Flags.

Manueller Soft-NUMAManual Soft-NUMA

Deaktivieren Sie den automatischen Soft-NUMA, und bearbeiten Sie die Registrierung, um eine Affinitätsmaske für die Knotenkonfiguration hinzuzufügen, damit SQL ServerSQL Server manuell für die Verwendung von Soft-NUMA konfiguriert werden kann.To manually configure SQL ServerSQL Server to use soft-NUMA, disable automatic soft-NUMA, and edit the registry to add a node configuration affinity mask. Wenn Sie diese Methode verwenden, kann die Soft-NUMA-Maske als binärer Eintrag, als DWORD-Registrierungseintrag (hexadezimal oder dezimal) oder als QWORD-Registrierungseintrag (hexadezimal oder dezimal) angegeben werden.When using this method, the soft-NUMA mask can be stated as a binary, DWORD (hexadecimal or decimal), or QWORD (hexadecimal or decimal) registry entry. Verwenden Sie QWORD- oder BINARY-Registrierungswerte (QWORD-Werte können vor SQL Server 2012 (11.x)SQL Server 2012 (11.x) nicht verwendet werden), um mehr als die ersten 32 CPUs zu konfigurieren.To configure more than the first 32 CPUs use QWORD or BINARY registry values (QWORD values cannot be used prior to SQL Server 2012 (11.x)SQL Server 2012 (11.x)). Nach Änderung der Registrierung müssen Sie Datenbank-EngineDatabase Engine neu starten, damit die Konfiguration von Soft-NUMA wirksam wird.After modifying the registry, you must restart the Datenbank-EngineDatabase Engine for the soft-NUMA configuration to take effect.

Tipp

Die Nummerierung der CPUs beginnt mit 0.CPUs are numbered starting with 0.

Warnung

Ein fehlerhaftes Bearbeiten der Registrierung kann eine schwerwiegende Beschädigung des Systems zur Folge haben.Incorrectly editing the registry can severely damage your system. Bevor Sie Änderungen an der Registrierung vornehmen, sollten Sie die wertvollen Daten auf dem Computer sichern.Before making changes to the registry, we recommend that you back up any valued data on the computer.

Gehen Sie von einem Beispielcomputer aus, der acht CPUs besitzt, jedoch keinen Hardware-NUMA.Consider the example of a computer with eight CPUs, that does not have hardware NUMA. Drei Soft-NUMA-Knoten werden konfiguriert.Three soft-NUMA nodes are configured.
Datenbank-EngineDatabase Engine-Instanz A wird für die Verwendung der CPUs 0 bis 3 konfiguriert.instance A is configured to use CPUs 0 through 3. Eine zweite Datenbank-EngineDatabase Engine -Instanz wird installiert und für die Verwendung der CPUs 4 bis 7 konfiguriert.A second instance of the Datenbank-EngineDatabase Engine is installed and configured to use CPUs 4 through 7. Das Beispiel kann wie folgt visuell dargestellt werden:The example can be visually represented as:

CPUs 0 1 2 3 4 5 6 7

Soft-NUMA <-N0--><-N1-><----N2---->

SQL Server <instance A ><instance B>

Instanz A, die eine hohe E/A-Aktivität aufweist, verfügt nun über zwei E/A-Threads und einen LAZY WRITER-Thread.Instance A, which experiences significant I/O, now has two I/O threads and one lazy writer thread. Instanz B, auf der prozessorintensive Vorgänge ausgeführt werden, verfügt nur über einen E/A-Thread und einen LAZY WRITER-Thread.Instance B, which performs processor-intensive operations, has only one I/O thread and one lazy writer thread. Den Instanzen können zwar unterschiedliche Mengen an Arbeitsspeicher zugewiesen werden. Im Unterschied zu Hardware-NUMA erhalten beide Instanzen den Arbeitsspeicher jedoch aus demselben Speicherblock des Betriebssystems, außerdem ist keine Speicher-Prozessor-Affinität vorhanden.Differing amounts of memory can be assigned to the instances, but unlike hardware NUMA, they both receive memory from the same operating system memory block, and there is no memory-to-processor affinity.

Der LAZY WRITER-Thread ist an die SQLOS-Ansicht der physischen NUMA-Arbeitsspeicherknoten gebunden.The lazy writer thread is tied to the SQLOS view of the physical NUMA memory nodes. Deshalb entspricht die von der Hardware angegebene Anzahl von physischen NUMA-Knoten der Anzahl von erstellten LAZY WRITER-Threads.Therefore, whatever the hardware presents as the number of physical NUMA nodes, this will be the number of lazy writer threads that are created. Weitere Informationen finden Sie unter How It Works: Soft NUMA, I/O Completion Thread, Lazy Writer Workers and Memory Nodes(Vorgehensweise: Soft-NUMA, E/A-Abschlussthreads, LAZY WRITER-Worker- und Arbeitsspeicherknoten).For more information, see How It Works: Soft NUMA, I/O Completion Thread, Lazy Writer Workers and Memory Nodes.

Hinweis

Die Soft-NUMA -Registrierungsschlüssel werden nicht kopiert, wenn Sie eine Instanz von SQL ServerSQL Server.The Soft-NUMA registry keys are not copied when you upgrade an instance of SQL ServerSQL Server.

Festlegen der CPU-AffinitätsmaskeSet the CPU affinity mask

Führen Sie auf Instanz A die folgende Anweisung aus, um die Instanz durch Festlegen der CPU-Affinitätsmaske für die Verwendung der CPUs 0, 1, 2 und 3 zu konfigurieren:Run the following statement on instance A to configure it to use CPUs 0, 1, 2, and 3 by setting the CPU affinity mask:

ALTER SERVER CONFIGURATION   
SET PROCESS AFFINITY CPU=0 TO 3;  

Führen Sie auf Instanz B die folgende Anweisung aus, um die Instanz durch Festlegen der CPU-Affinitätsmaske für die Verwendung der CPUs 4, 5, 6 und 7 zu konfigurieren:Run the following statement on instance B to configure it to use CPUs 4, 5, 6, and 7 by setting the CPU affinity mask:

ALTER SERVER CONFIGURATION   
SET PROCESS AFFINITY CPU=4 TO 7;  

Zuordnen von Soft-NUMA-Knoten zu den CPUsMap soft-NUMA nodes to CPUs

Fügen Sie mithilfe des Registrierungs-Editors (regedit.exe) die folgenden Registrierungsschlüssel hinzu, um den CPUs 0 und 1 den Soft-NUMA-Knoten 0, den CPUs 2 und 3 den Soft-NUMA-Knoten 1 und den CPUs 4, 5, 6 und 7 den Soft-NUMA-Knoten 2 zuzuordnen.Using the Registry Editor program (regedit.exe), add the following registry keys to map soft-NUMA node 0 to CPUs 0 and 1, soft-NUMA node 1 to CPUs 2 and 3, and soft-NUMA node 2 to CPUs 4, 5, 6, and 7.

Tipp

Verwenden Sie zum Angeben der CPUs 60 bis 63 den QWORD-Wert F000000000000000 oder den BINARY-Wert 1111000000000000000000000000000000000000000000000000000000000000.To specify CPUs 60 through 63, use a QWORD value of F000000000000000 or a BINARY value of 1111000000000000000000000000000000000000000000000000000000000000.

Legen Sie für das folgende Beispiel einen DL580 G9-Server mit 18 Kernen pro Socket (in vier Sockets) zugrunde, wobei jeder Socket eine eigene K-Gruppe darstellt.In the following example, assume you have a DL580 G9 server, with 18 cores per socket (in four sockets), and each socket is in its own K-group. Eine von Ihnen erstellte Soft-NUMA-Konfiguration würde Folgendem ähneln: sechs Kerne pro Knoten, drei Knoten pro Gruppe, vier Gruppen.A soft-NUMA configuration that you might create would look something like the following: six cores per Node, three nodes per group, four groups.

Beispiel für einen SQL Server 2016 (13.x)SQL Server 2016 (13.x) -Server mit mehreren K-GruppenExample for a SQL Server 2016 (13.x)SQL Server 2016 (13.x) server with multiple K-Groups typeType WertnameValue name WertdatenValue data
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node0HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node0 DWORDDWORD CPUMaskCPUMask 0x3F0x3F
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node0HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node0 DWORDDWORD GroupGroup 00
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node1HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node1 DWORDDWORD CPUMaskCPUMask 0x0fc00x0fc0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node1HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node1 DWORDDWORD GroupGroup 00
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node2HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node2 DWORDDWORD CPUMaskCPUMask 0x3f0000x3f000
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node2HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node2 DWORDDWORD GroupGroup 00
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node3HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node3 DWORDDWORD CPUMaskCPUMask 0x3F0x3F
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node3HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node3 DWORDDWORD GroupGroup 11
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node4HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node4 DWORDDWORD CPUMaskCPUMask 0x0fc00x0fc0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node4HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node4 DWORDDWORD GroupGroup 11
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node5HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node5 DWORDDWORD CPUMaskCPUMask 0x3f0000x3f000
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node5HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node5 DWORDDWORD GroupGroup 11
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node6HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node6 DWORDDWORD CPUMaskCPUMask 0x3F0x3F
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node6HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node6 DWORDDWORD GroupGroup 22
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node7HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node7 DWORDDWORD CPUMaskCPUMask 0x0fc00x0fc0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node7HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node7 DWORDDWORD GroupGroup 22
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node8HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node8 DWORDDWORD CPUMaskCPUMask 0x3f0000x3f000
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node8HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node8 DWORDDWORD GroupGroup 22
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node9HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node9 DWORDDWORD CPUMaskCPUMask 0x3F0x3F
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node9HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node9 DWORDDWORD GroupGroup 33
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node10HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node10 DWORDDWORD CPUMaskCPUMask 0x0fc00x0fc0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node10HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node10 DWORDDWORD GroupGroup 33
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node11HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node11 DWORDDWORD CPUMaskCPUMask 0x3f0000x3f000
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node11HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node11 DWORDDWORD GroupGroup 33

MetadatenMetadata

Sie können die folgenden DMVs zum Anzeigen des aktuellen Status und der Konfiguration von Soft-NUMA verwenden.You can use the following DMVs to view the current state and configuration of soft-NUMA.

Hinweis

Obwohl Sie den ausgeführten Wert für automatischen soft-NUMA mithilfe von sp_configure (Transact-SQL) anzeigen können, können Sie dessen Wert mit sp_configure nicht ändern.While you can view the running value for automatic soft-NUMA using sp_configure (Transact-SQL), you cannot change its value using sp_configure. Sie müssen die ALTER SERVER CONFIGURATION (Transact-SQL)-Anweisung mit dem SET SOFTNUMA-Argument verwenden.You must use the ALTER SERVER CONFIGURATION (Transact-SQL) statement with the SET SOFTNUMA argument.

Weitere InformationenSee Also

Zuordnen von TCP/IP-Ports zu NUMA-Knoten (SQL Server) Map TCP IP Ports to NUMA Nodes (SQL Server)
Affinitätsmaske (Serverkonfigurationsoption) affinity mask Server Configuration Option
ALTER SERVER CONFIGURATION (Transact-SQL) ALTER SERVER CONFIGURATION (Transact-SQL)
sys.dm_os_nodes (Transact-SQL)sys.dm_os_nodes (Transact-SQL)