SQL Server には、NUMA ノードへの TCP/IP ポートのマッピング という機能があります。
この機能は、特定の NUMA ノードに優先的に接続をさせるため、SQL Server 構成マネージャーで「1501[1]」というような TCP ポートの割り当てを行うことで、使用するノードを固定化することができる機能となります。
SQL Server は Azure Arc に接続をすることが可能であり、これにより、Microsoft Defender for Cloud を使用して高度な脅威検知の機能 (Advanced Thread Protection) が使用可能となります。
- SQL Server を Azure Arc に接続する
- Microsoft Defender for Cloud を使用して SQL Server を保護する
- SQL 高度な脅威保護
- Enable Microsoft Defender for SQL and Data Classification
SQL Server の Azure Arc への接続ですが、本投稿作成時点では冒頭に記載した NUMA ノードへの TCP/IP ポートのマッピングを使用している接続でエラーとなり、Azure Arc のマシンとしては認識されるが、SQL Server の登録をしても SQL Server が認識されないという状態となるようです。
次のテキストは「C:\ProgramData\GuestConfig\extension_logs\Microsoft.AzureData.WindowsAgent.SqlServer\unifiedagent.log」の内容となりますが、NUMA ノードへのマッピングのフォーマットの TCP ポートの割り当てが行われている場合、次のようなエラーが 10 程度の間隔で発生するようです。
2026-10-25 09:24:40.2102 +09:00|ERROR|Microsoft.ArcData.Agent.Providers.SqlInstancesDetailsProvider|[Thread ID: 9]||Got exception while getting instance: MSSQLSERVER information: System.FormatException: The input string '1501[1]' was not in a correct format. at System.Number.ThrowFormatException[TChar](ReadOnlySpan`1 value) at System.Convert.ToInt32(String value) at Microsoft.ArcData.Agent.Providers.SqlInstancesDetailsProvider.<>c.<GetInstalledSqlServersAllProperties>b__34_2(String n) at System.Linq.Enumerable.ArraySelectIterator`2.Fill(ReadOnlySpan`1 source, Span`1 destination, Func`2 func) at System.Linq.Enumerable.ArraySelectIterator`2.ToArray() at Microsoft.ArcData.Agent.Providers.SqlInstancesDetailsProvider.GetInstalledSqlServersAllProperties(String[] skipInstanceNames, String serverLevelLicenseType, DateTime snapshotTimestamp)
NUMA ノードのへの TCP/IP ポートのマッピングでは「1501[1]」というようなフォーマットでポート番号を指定する必要がありますが、これが想定していない形式 (数字以外) として認識されてしまい、エラーとなり Azrure Arc に SQL Server が接続できないという状態となってしまうようですね。
この機能を使用すること自体稀なので、実運用環境で影響が出ることはほとんどないと思いますが、Arc で SQL Server が接続できないケースの一例として情報を残しておこうと思います。