錯誤 (指定的機碼未出現在字典中) 並在伺服器2019中的 Azure VM 上 SQL Server FCI 安裝失敗

本文可協助您解決當您嘗試在 Microsoft Azure 虛擬機器 (VM) 上,于 Windows Server 2019 中安裝 Microsoft SQL Server 容錯移轉叢集實例 (FCI) 時所發生的問題。

適用于:  VM-Windows 中的 SQL Server,Windows Server 2019
原始 KB 編號:   4525647

徵狀

當您嘗試在 Microsoft Azure 虛擬機器 (VM) 上,于 Windows Server 2019 中安裝 Microsoft SQL Server 容錯移轉叢集實例 (FCI) 時,安裝會失敗,而且您會收到下列錯誤訊息:

指定的索引鍵未出現在字典中。

在此情況下,您可以在 SQL Server setup 資料夾的 Details.txt 記錄檔中看到下列其他資訊:

動作資料: Feature = SQL_Engine_Core_Inst_sql_engine_core_inst_Cpu64 案例 = 安裝時序 = ConfigNonRC ConfigObjectType = Microsoft.SqlServer.Configuration。ClusterConfiguration FailoverClusterNamePrivateConfigObject 功能 = SQL_Engine_Core_Inst FeatureCpuType = Cpu64 FeaturePackageId = sql_engine_core_inst FeatureClusterState = CompleteFailoverCluster 設定動作無法在計時 ConfigNonRC 和案例 ConfigNonRC 期間進行功能 SQL_Engine_Core_Inst。 指定的索引鍵未出現在字典中。 目前例外狀況的設定失敗類別為 ConfigurationFailure 設定動作無法在計時 ConfigNonRC 和案例 ConfigNonRC 期間進行功能 SQL_Engine_Core_Inst。 KeyNotFoundException:字典中未出現指定的索引鍵。 在 ThrowHelper 中的 ThrowKeyNotFoundException () 。 Dictionary 2.get_Item(TKey key) at Microsoft.SqlServer.Configuration.ClusterConfiguration.FailoverClusterNamePrivateConfigObject.CreateFailoverClusterNameResource(FailoverClusterNamePublicConfigObject pubConfig) at Microsoft.SqlServer.Configuration.ClusterConfiguration.FailoverClusterNamePrivateConfigObject.Install(ConfigActionTiming timing, Dictionary 2 actionData,PublicConfigurationBase spcb) Microsoft.SqlServer.Configuration.SqlConfigBase.PrivateConfigurationBase.Exe可愛 (ConfigActionScenario 案例,ConfigActionTiming 時序、ConfigBaseAction 動作、字典 2 actionData, PublicConfigurationBase spcbCurrent) at Microsoft.SqlServer.Configuration.SqlConfigBase.SqlFeatureConfigBase.Execute(ConfigActionScenario scenario, ConfigActionTiming timing, ConfigBaseAction action, Dictionary 2 ActionData、PublicConfigurationBase spcbCurrent) 于 Microsoft.SqlServer.Configuration.SqlConfigBase.SlpConfigAction.ExeCuteAction (字串 actionId) Microsoft.SqlServer.Configuration.SqlConfigBase.SlpConfigAction.Exe的字串 actionId (的) 的字串 errorStream,KeyNotFoundException 下列是一個例外狀況堆疊,列出例外情況最外面的最內層順序內部例外狀況為縮排例外狀況。 HResult:0x80131577 資料: SQL。FailureCategory = ConfigurationFailure WatsonConfigActionData = INSTALL@CONFIGNONRC @SQL_ENGINE_CORE_INST WatsonExceptionFeatureIdsActionData = System.String [] 堆疊: () 在中,。泛型。字典 2.get_Item(TKey key) at Microsoft.SqlServer.Configuration.ClusterConfiguration.FailoverClusterNamePrivateConfigObject.CreateFailoverClusterNameResource(FailoverClusterNamePublicConfigObject pubConfig) at Microsoft.SqlServer.Configuration.ClusterConfiguration.FailoverClusterNamePrivateConfigObject.Install(ConfigActionTiming timing, Dictionary 2 ThrowHelper,ThrowKeyNotFoundException actionData) 于 Microsoft.SqlServer.Configuration.SqlConfigBase.PrivateConfigurationBase.Exe可愛 (PublicConfigurationBase 案例,Spcb 時序,ConfigActionScenario action,Dictionary 2 actionData, PublicConfigurationBase spcbCurrent) at Microsoft.SqlServer.Configuration.SqlConfigBase.SqlFeatureConfigBase.Execute(ConfigActionScenario scenario, ConfigActionTiming timing, ConfigBaseAction action, Dictionary 2 ConfigActionTiming,ConfigBaseAction actionData) Microsoft.SqlServer.Configuration.SqlConfigBase.SlpConfigAction.ExePublicConfigurationBase (string spcbCurrent) Microsoft.SqlServer.Configuration.SqlConfigBase.SlpConfigAction.Exe(

原因

Windows Server 2019 中引入了可以 PowerShell FailoverClusters的指令程式呼叫的新參數 ManagementPointNetworkType。 您可以針對新的參數使用下列選項。

Switch 參數 Usage
單身 人士 使用傳統的 DHCP 或靜態 IP 位址方法。
分散式 使用 [分散式網路名稱] 使用節點 IP 位址。
自動 使用偵測來判斷適當的設定。 如果 SQL Server 是在 Azure 中執行,則使用 分散式。 如果 SQL Server 執行內部部署,請使用 Singleton (預設設定) 。

如果您使用「Windows 叢集管理員」工具建立 Windows 叢集,該工具會將 switch 參數設定為 [自動]。 因為您正在使用 Azure VM,所以交換器會改用分散式網路名稱。

您可以執行下列 PowerShell 命令來確認:

C:\windows\system32> Get-clusterresource

由此命令傳回的輸出如下所示:

Name                 State          OwnerGroup                ResourceType
Cloud Witness                       Online Cluster Group      Cloud Witness
Cluster Name                        Online Cluster Group      Distributed Network Name
Cluster Pool 1                      Online 45d8f3c2-e8df-4a01-87b8-f3c383801f3f
                                                              Storage Pool
Cluster Virtual Disk
   (ClusterPerformanceHistory)      Online Cluster Group      Physical Disk
Health                              Online Cluster Group      Health Service
SDDC Management                     Online Cluster Group      SDDC Management
Storage QoS Resource                Online Cluster Group      Storage QoS Policy Manager

CreateFailoverClusterNameResource(FailoverClusterNamePublicConfigObject pubConfig)函數會檢查其類型為 isNetworkName 的資源名稱。 這是確認您輸入的虛擬伺服器名稱已存在。

不過,在僅有分散式網路名稱的 Windows 群集上安裝 SQL Server FCI 是不受支援的。 [徵兆] 區段中所述的錯誤訊息,表示 Windows Server 2019 中沒有任何可用的資源,其類型為 isNetworkName。

解決方案

若要修正此問題,您可以刪除目前的叢集,然後使用具有下列參數的 PowerShell 命令,重新建立:

managementpointnetworktype singleton