서버 2019의 Azure VM에서 오류(지정된 키가 사전에 없음) 및 SQL Server FCI 설치가 실패함
이 문서는 Microsoft Azure VM(가상 머신)의 Windows Server 2019에 Microsoft SQL Server FCI(장애 조치(failover) 클러스터형 인스턴스)를 설치하려고 할 때 발생하는 문제를 resolve 데 도움이 됩니다.
적용 대상: VM의 SQL Server - Windows, Windows Server 2019
원래 KB 번호: 4525647
증상
Microsoft Azure VM(가상 머신)의 Windows Server 2019에서 Microsoft SQL Server FCI(장애 조치(failover) 클러스터형 인스턴스)를 설치하려고 하면 설치가 실패하고 다음 오류 메시지가 표시됩니다.
지정된 키가 사전에 없습니다.
이 경우 SQL Server 설정 폴더의 Details.txt 로그 파일에서 다음과 같은 추가 정보를 볼 수 있습니다.
작업 데이터: 기능 = SQL_Engine_Core_Inst_sql_engine_core_inst_Cpu64 시나리오 = 설치 타이밍 = ConfigNonRC ConfigObjectType = Microsoft.SqlServer.Configuration.ClusterConfiguration.FailoverClusterNamePrivateConfigObject FeatureName = SQL_Engine_Core_Inst FeatureCpuType = Cpu64 FeaturePackageId = sql_engine_core_inst FeatureClusterState = CompleteFailoverCluster 구성 작업은 ConfigNonRC 및 시나리오 ConfigNonRC 타이밍 동안 기능 SQL_Engine_Core_Inst 실패했습니다. 지정된 키가 사전에 없습니다. 현재 예외의 구성 실패 범주는 ConfigNonRC 타이밍 및 시나리오 ConfigNonRC 동안 기능 SQL_Engine_Core_Inst 대한 ConfigurationFailure 구성 작업이 실패했음입니다. System.Collections.Generic.KeyNotFoundException: 지정된 키가 사전에 없습니다. Microsoft.SqlServer.Configuration.SqlConfigBase.PrivateConfigurationBase.Execute(ConfigActionScenario 시나리오의 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 actionData, PublicConfigurationBase spcb)의 System.ThrowHelper.ThrowKeyNotFoundException()에서 ConfigActionTiming 타이밍, ConfigBaseAction 작업, Dictionary2 actionData, PublicConfigurationBase spcbCurrent) at Microsoft.SqlServer.Configuration.SqlConfigBase.SqlFeatureConfigBase.Execute(ConfigActionScenario scenario, ConfigActionTiming timing, ConfigBaseAction action, Dictionary
2 actionData, PublicConfigurationBase spcbCurrent) at Microsoft.SqlServer.Configuration.SqlConfigBase.SlpConfigAction.ExecuteAction(String actionId) microsoft.SqlServer.Configuration.SqlConfigBase.SlpConfigAction.Execute(String actionId, TextWriter errorStream) 다음은 예외를 가장 바깥쪽에서 가장 안쪽 순서로 나열하는 예외 스택입니다. 내부 예외가 들여쓰기되는 예외 유형: System.Collections.Generic.KeyNotFoundException 메시지: 지정된 키가 사전에 없습니다. HResult: 0x80131577 데이터: 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 시나리오, ConfigActionTiming 타이밍, ConfigBaseAction action, Dictionary2 actionData, PublicConfigurationBase spcbCurrent) at Microsoft.SqlServer.Configuration.SqlConfigBase.SqlFeatureConfigBase.Execute(ConfigActionScenario scenario, ConfigActionTiming timing, ConfigBaseAction action, Dictionary
2 actionData, PublicConfigurationBase spcbCurrent) at Microsoft.SqlServer.Configuration.SqlConfigBase.SlpConfigAction.ExecuteAction(String actionId) at Microsoft.SqlServer.Configuration.SqlConfigBase.SlpConfigAction.Execute(String actionId, TextWriter errorStream)
원인
FailoverClusters용 PowerShell cmdlet에서 호출할 수 있는 새로운 스위치 ManagementPointNetworkType이 Windows Server 2019에 도입되었습니다. 새 스위치에 대해 다음 옵션을 사용할 수 있습니다.
Switch 매개 변수 | Usage |
---|---|
단일 | DHCP 또는 고정 IP 주소의 기존 메서드를 사용합니다. |
분산 | 노드 IP 주소를 사용하여 분산 네트워크 이름을 사용합니다. |
자동 | 검색을 사용하여 적절한 설정을 확인합니다. SQL Server Azure에서 실행되는 경우 은 Distributed를 사용합니다. 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 설치는 지원되지 않습니다. 증상 섹션에 언급된 오류 메시지는 유형이 IsNetworkName인 Windows Server 2019에서 사용할 수 있는 리소스가 없음을 나타냅니다.
해결 방법
이 문제를 해결하려면 현재 클러스터를 삭제한 다음, 다음 매개 변수가 있는 PowerShell 명령을 사용하여 다시 만들 수 있습니다.
managementpointnetworktype singleton