Erreur (la clé donnée n’était pas présente dans le dictionnaire) et SQL Server’installation de L’instance de cluster de basculement échoue sur une machine virtuelle Azure dans Server 2019
Cet article vous aide à résoudre le problème qui se produit lorsque vous essayez d’installer une instance de cluster de basculement (FCI) Microsoft SQL Server dans Windows Server 2019 sur une machine virtuelle Microsoft Azure.
S’applique à : SQL Server dans la machine virtuelle - Windows, Windows Server 2019
Numéro de la base de connaissances d’origine : 4525647
Symptômes
Lorsque vous essayez d’installer une instance microsoft SQL Server cluster de basculement (FCI) dans Windows Server 2019 sur une machine virtuelle Microsoft Azure, l’installation échoue et le message d’erreur suivant s’affiche :
La clé donnée n’était pas présente dans le dictionnaire.
Dans ce cas, vous pouvez voir les informations supplémentaires suivantes dans le fichier journal Details.txt du dossier d’installation SQL Server :
Données de l’action : 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 L’action de configuration n’a pas pu être effectuée pour les SQL_Engine_Core_Inst de fonctionnalité lors du minutage de ConfigNonRC et du scénario ConfigNonRC. La clé donnée n’était pas présente dans le dictionnaire. La catégorie d’échec de configuration de l’exception actuelle est l’action ConfigurationFailure Échec de la configuration pour la fonctionnalité SQL_Engine_Core_Inst lors du minutage de ConfigNonRC et du scénario ConfigNonRC. System.Collections.Generic.KeyNotFoundException : la clé donnée n’était pas présente dans le dictionnaire. sur System.ThrowHelper.ThrowKeyNotFoundException() sur ActionData System.Collections.Generic.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, PublicConfigurationBase spcb) sur 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, Dictionary
2 actionData, PublicConfigurationBase spcbCurrent) sur Microsoft.SqlServer.Configuration.SqlConfigBase.SlpConfigAction.ExecuteAction(String actionId) sur Microsoft.SqlServer.Configuration.SqlConfigBase.SlpConfigAction.Execute(String actionId, TextWriter errorStream) Voici une pile d’exceptions répertoriant les exceptions dans l’ordre le plus à l’intérieur Les exceptions sont mises en retrait Type d’exception : System.Collections.Generic.KeyNotFoundException Message : La clé donnée n’était pas présente dans le dictionnaire. HResult : 0x80131577 Données : 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, Dictionary
2 actionData, PublicConfigurationBase spcb) at Microsoft.SqlServer.Configuration.SqlConfigBase.PrivateConfigurationBase.Execute(ConfigActionScenario scenario, ConfigActionTiming timing, ConfigBaseActionAction action, Dictionary2 actionData, PublicConfigurationBase spcbCurrent) at Microsoft.SqlServer.Configuration.SqlConfigBase.SqlFeatureConfigBase.Execute(ConfigActionScenario scenario, ConfigActionTiming timing, ConfigBaseAction action, Dictionary
2 actionData, PublicConfigurationBase spcbCurrent) sur Microsoft.SqlServer.Configuration.SqlConfigBase.SlpConfigAction.ExecuteAction(String actionId) à l’adresse Microsoft.SqlServer.Configuration.SqlConfigBase.SlpConfigAction.Execute(String actionId, TextWriter errorStream)
Cause
Un nouveau commutateur, ManagementPointNetworkType, qui peut être appelé par les applets de commande PowerShell pour FailoverClusters est introduit dans Windows Server 2019. Vous pouvez utiliser les options suivantes pour le nouveau commutateur.
Commutateur de paramètre | Utilisation |
---|---|
Singleton | Utilise la méthode traditionnelle de DHCP ou d’adresse IP statique. |
Distribué | Utilisez un nom de réseau distribué à l’aide d’adresses IP de nœud. |
Automatique | Utilise la détection pour déterminer le paramètre approprié. Si SQL Server s’exécute dans Azure, utilise Distributed. Si SQL Server s’exécute localement, utilise Singleton (paramètre par défaut). |
Si vous créez le cluster Windows à l’aide de l’outil Gestionnaire de cluster Windows, l’outil définit le paramètre de commutateur sur Automatique. Étant donné que vous travaillez sur une machine virtuelle Azure, le commutateur utilise un nom de réseau distribué à la place.
Vous pouvez le vérifier en exécutant la commande PowerShell suivante :
C:\windows\system32> Get-clusterresource
La sortie retournée par cette commande se présente comme suit :
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
La CreateFailoverClusterNameResource(FailoverClusterNamePublicConfigObject pubConfig)
fonction vérifie le nom de la ressource dont le type estNetworkName. Cela permet de vérifier que le nom du serveur virtuel que vous avez entré existe déjà.
Toutefois, l’installation de l’instance de cluster de basculement SQL Server sur un cluster Windows qui n’a qu’un nom de réseau distribué n’est pas prise en charge. Le message d’erreur mentionné dans la section Symptômes indique qu’aucune ressource n’est disponible dans Windows Server 2019 dont le type estNetworkName.
Résolution
Pour résoudre ce problème, vous pouvez supprimer le cluster actuel, puis le recréer à l’aide d’une commande PowerShell qui a le paramètre suivant :
managementpointnetworktype singleton
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour