Share via


Fel (den angivna nyckeln fanns inte i ordlistan) och SQL Server FCI-installationen misslyckas på en virtuell Azure-dator i Server 2019

Den här artikeln hjälper dig att lösa problemet som uppstår när du försöker installera en Microsoft SQL Server redundansklusterinstans (FCI) i Windows Server 2019 på en virtuell Microsoft Azure-dator (VM).

Gäller för: SQL Server i vm – Windows, Windows Server 2019
Ursprungligt KB-nummer: 4525647

Symptom

När du försöker installera en Microsoft SQL Server redundansklusterinstans (FCI) i Windows Server 2019 på en virtuell Microsoft Azure-dator (VM), misslyckas installationen och du får följande felmeddelande:

Den angivna nyckeln fanns inte i ordlistan.

I det här fallet kan du se följande ytterligare information i loggfilen Details.txt i SQL Server installationsmapp:

Åtgärdsdata: Feature = SQL_Engine_Core_Inst_sql_engine_core_inst_Cpu64 Scenario = install Timing = ConfigNonRC ConfigObjectType = Microsoft.SqlServer.Configuration.ClusterConfiguration.FailoverClusterNamePrivateConfigObject FeatureName = SQL_Engine_Core_Inst FeatureCpuType = Cpu64 FeaturePackageId = sql_engine_core_inst FeatureClusterState = CompleteFailoverCluster Konfigurationsåtgärden misslyckades för funktion SQL_Engine_Core_Inst under tidsinställningen ConfigNonRC och scenariot ConfigNonRC. Den angivna nyckeln fanns inte i ordlistan. Kategorin för konfigurationsfel för det aktuella undantaget är ConfigurationFailure Configuration-åtgärden misslyckades för funktion SQL_Engine_Core_Inst under tidsinställningen ConfigNonRC och scenariot ConfigNonRC. System.Collections.Generic.KeyNotFoundException: Den angivna nyckeln fanns inte i ordlistan. på System.ThrowHelper.ThrowKeyNotFoundException() på System.Collections.Generic.Dictionary2.get_Item(TKey key) at Microsoft.SqlServer.Configuration.ClusterConfiguration.FailoverClusterNamePrivateConfigObject.CreateFailoverClusterNameResource(FailoverClusterNamePublicConfigObject pubConfig) at Microsoft.SqlServer.Configuration.ClusterConfiguration.FailoverClusterNamePrivateConfigObject.Install(ConfigActionTiming timing, Dictionary2 actionData, PublicConfigurationBase spcb) på Microsoft.SqlServer.Configuration.SqlConfigBase.PrivateConfigurationBase.Execute(ConfigActionScenario scenario, ConfigActionTiming timing, ConfigBaseAction action, Dictionary2 actionData, PublicConfigurationBase spcbCurrent) at Microsoft.SqlServer.Configuration.SqlConfigBase.SqlFeatureConfigBase.Execute(ConfigActionScenario scenario, ConfigActionTiming timing, ConfigBaseAction action, Dictionary2 actionData, PublicConfigurationBase spcbCurrent) på Microsoft.SqlServer.Configuration.SqlConfigBase.SlpConfigAction.ExecuteAction(String actionId) på Microsoft.SqlServer.Configuration.SqlConfigBase.SlpConfigAction.Execute(String actionId, TextWriter errorStream) Följande är en undantagsstack som visar undantagen i den yttersta till innersta ordningen Inre undantag är indragen Undantagstyp: System.Collections.Generic.KeyNotFoundException Meddelande: Den angivna nyckeln fanns inte i ordlistan. HResult: 0x80131577 Data: SQL. Setup.FailureCategory = ConfigurationFailure WatsonConfigActionData = INSTALL@CONFIGNONRC@SQL_ENGINE_CORE_INST WatsonExceptionFeatureIdsActionData = System.String[] Stack: at System.ThrowHelper.ThrowKeyNotFoundException() at System.Collections.Generic.Dictionary2.get_Item(TKey key) at Microsoft.SqlServer.Configuration.ClusterConfiguration.FailoverClusterNamePrivateConfigObject.CreateFailoverClusterNameResource(FailoverClusterNamePublicConfigObject pubConfig) at Microsoft.SqlServer.Configuration.ClusterConfiguration.FailoverClusterNamePrivateConfigObject.Install(ConfigActionTiming timing, Dictionary2 actionData, PublicConfigurationBase spcb) på Microsoft.SqlServer.Configuration.SqlConfigBase.PrivateConfigurationBase.Execute(ConfigActionScenario scenario, ConfigActionTiming timing, ConfigBaseAction action, Dictionary2 actionData, PublicConfigurationBase spcbCurrent) at Microsoft.SqlServer.Configuration.SqlConfigBase.SqlFeatureConfigBase.Execute(ConfigActionScenario scenario, ConfigActionTiming timing, ConfigBaseAction action, Dictionary2 actionData, PublicConfigurationBase spcbCurrent) på Microsoft.SqlServer.Configuration.SqlConfigBase.SlpConfigAction.ExecuteAction(String actionId) på Microsoft.SqlServer.Configuration.SqlConfigBase.SlpConfigAction.Execute(String actionId, TextWriter errorStream)

Orsak

En ny växel, ManagementPointNetworkType, som kan anropas av PowerShell-cmdletar för Redundanskluster introduceras i Windows Server 2019. Du kan använda följande alternativ för den nya växeln.

Växla parameter Användning
Singleton Använder den traditionella metoden DHCP eller statisk IP-adress.
Distribueras Använd ett distribuerat nätverksnamn med hjälp av nod-IP-adresser.
Automatisk Använder identifiering för att fastställa lämplig inställning. Om SQL Server körs i Azure använder distribuerad. Om SQL Server körs lokalt använder singleton (standardinställning).

Om du skapar Windows-klustret med hjälp av Windows Cluster Manager Tool anger verktyget växelparametern till Automatisk. Eftersom du arbetar på en virtuell Azure-dator använder växeln ett distribuerat nätverksnamn i stället.

Du kan kontrollera detta genom att köra följande PowerShell-kommando:

C:\windows\system32> Get-clusterresource

Utdata som returneras av det här kommandot liknar följande:

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

Funktionen CreateFailoverClusterNameResource(FailoverClusterNamePublicConfigObject pubConfig) kontrollerar resursnamnet vars typ ärNetworkName. Det här är för att kontrollera att det virtuella servernamnet som du angav redan finns.

Det går dock inte att installera SQL Server FCI i ett Windows-kluster som bara har ett distribuerat nätverksnamn. Felmeddelandet som nämns i avsnittet Symptom anger att det inte finns någon tillgänglig resurs i Windows Server 2019 vars typ ärNetworkName.

Åtgärd

Du kan åtgärda problemet genom att ta bort det aktuella klustret och sedan skapa det igen med hjälp av ett PowerShell-kommando som har följande parameter:

managementpointnetworktype singleton