다음을 통해 공유


마이그레이션 대시보드를 사용하여 마이그레이션 경험 추적 - Azure Arc에서 사용하도록 설정된 SQL Server

적용 대상:SQL Server

마이그레이션 대시보드는 Azure Arc에서 사용하도록 설정된 SQL Server의 모든 인스턴스와 해당 마이그레이션 준비 상태를 보여 주는 편리한 보기입니다. Azure Arc에서 사용하도록 설정된 SQL Server는 Azure로 마이그레이션하기 위한 평가를 자동으로 생성합니다. 이 평가는 클라우드 마이그레이션 및 현대화 경험의 성공에 중요한 역할을 합니다. 이 대시보드를 사용하면 대규모 마이그레이션 과정을 추적할 수 있습니다. 준비 상태는 Azure 관리 평면에 속성으로 프로젝팅되므로 Azure에 기본 제공된 조직, 태그 지정 및 쿼리 기능을 사용할 수 있습니다.

대시보드는 다음을 제공합니다.

  • 검색된 SQL Server 인스턴스 및 데이터베이스에 대한 개요입니다.
  • 생성된 평가가 있는 SQL Server 인스턴스의 개요입니다.
  • 각 Azure SQL 제품에 대한 마이그레이션 준비 요약입니다.
  • 필요에 맞게 보기를 조정하는 데 사용할 수 있는 풍부한 필터링 기능입니다.

마이그레이션 평가 검토

다음과 같은 방법으로 마이그레이션 대시보드에 액세스할 수 있습니다.

  • Azure Portal에서 Azure Arc 를 검색하고 Azure Arc 센터로 이동합니다.
  • 왼쪽 창에서 데이터 서비스를 확장하고 SQL Server 인스턴스로 이동합니다.
  • 마이그레이션 대시보드 탭을 선택합니다.

Azure Arc에서 사용하도록 설정된 SQL Server에 대한 마이그레이션 대시보드를 보여 주는 스크린샷

검색된 SQL Server 인스턴스 및 데이터베이스 요약

대시보드의 첫 번째 섹션에서는 액세스할 수 있는 모든 SQL Server 인스턴스 및 데이터베이스에 대한 개요를 제공합니다. 버전 및 버전별로 인스턴스의 배포를 볼 수도 있습니다.

SQL Server 인스턴스 및 데이터베이스 및 버전별 배포를 보여 주는 마이그레이션 대시보드를 보여 주는 스크린샷.

SQL Server 마이그레이션 평가 요약

대시보드의 이 섹션에서는 Azure Arc에서 사용하도록 설정된 SQL Server 인스턴스의 마이그레이션 평가 및 마이그레이션 준비 상태를 간략하게 설명합니다. 사용 가능한 평가가 있는 인스턴스 수를 확인할 수 있습니다. 각 Azure SQL 제품에 대한 마이그레이션 준비 상태는 별도로 표시됩니다.

Azure SQL 제품에 대한 인스턴스 및 데이터베이스의 마이그레이션 평가 및 준비 상태 개요가 포함된 마이그레이션 대시보드를 보여 주는 스크린샷

Azure Resource Graph 쿼리

Azure Resource Graph는 Azure Arc에서 사용하도록 설정된 SQL Server 인스턴스의 준비 속성을 쿼리하는 효율적이고 성능이 좋은 수단을 제공합니다. 다음은 몇 가지 샘플 쿼리입니다.

resources
 | where type == 'microsoft.azurearcdata/sqlserverinstances'
 | where properties.migration.assessment.assessmentUploadTime > ago(14d) and properties.migration.assessment.enabled == true and isnotnull(parse_json(properties.migration.assessment.skuRecommendationResults))
 | extend azureSqlDatabaseRecommendationStatus = tostring(properties.migration.assessment.skuRecommendationResults.azureSqlDatabase.recommendationStatus)
 | extend azureSqlManagedInstanceRecommendationStatus = tostring(properties.migration.assessment.skuRecommendationResults.azureSqlManagedInstance.recommendationStatus)
 | extend azureSqlVirtualMachineRecommendationStatus = tostring(properties.migration.assessment.skuRecommendationResults.azureSqlVirtualMachine.recommendationStatus)
 | extend serverAssessments = tostring(properties.migration.assessment.serverAssessments)
 | extend subscriptionId = extract(@"/subscriptions/([^/]+)", 1, id)
 | extend resourceGroup = extract(@"/resource[g/G]roups/([^/]+)", 1, id)
 | mv-expand platformStatus = pack_array(
     pack("platform", "Azure SQL Database", "status", azureSqlDatabaseRecommendationStatus),
     pack("platform", "Azure SQL Managed Instance", "status", azureSqlManagedInstanceRecommendationStatus),
     pack("platform", "Azure SQL Virtual Machine", "status", azureSqlVirtualMachineRecommendationStatus)
   )
 | extend platformIncludedString = strcat('"AppliesToMigrationTargetPlatform":', strcat('"', replace(" ", "", tolower(tostring(platformStatus["platform"]))), '"'))
 | extend platformHasIssues = tolower(serverAssessments) has tolower(platformIncludedString)
 | project Platform = tostring(platformStatus["platform"]), status = tostring(platformStatus["status"]), tostring(serverAssessments), id, platformHasIssues
 | extend finalStatus = case(
     status == "Ready" and platformHasIssues, "Ready with Conditions",
     status == "Ready", "Ready",
     status == "NotReady", "NotReady",
     isnull(status) or status !in ("Ready", "NotReady", "Ready with Conditions"), "Unknown",
     "Unknown")
 | summarize TotalAssessed = count(), Ready = countif(finalStatus == "Ready"), NotReady = countif(finalStatus == "NotReady"),
     ReadyWithConditions = countif(finalStatus == "Ready with Conditions"), Unknown = countif(finalStatus == "Unknown")
     by Platform
az graph query -q "resources | where type =~ 'microsoft.hybridcompute/machines' | extend machineId = tolower(tostring(id)), datacenter = iif(isnull(tags.Datacenter), '', tags.Datacenter), status = tostring(properties.status) | extend mssqlinstalled = coalesce(tobool(properties.detectedProperties.mssqldiscovered),false) | extend pgsqlinstalled = coalesce(tobool(properties.detectedProperties.pgsqldiscovered),false) | extend mysqlinstalled = coalesce(tobool(properties.detectedProperties.mysqldiscovered),false) | extend osSku = properties.osSku, osName = properties.osName, osVersion = properties.osVersion | extend coreCount = tostring(properties.detectedProperties.logicalCoreCount), totalPhysicalMemoryinGB = tostring(properties.detectedProperties.totalPhysicalMemoryInGigabytes)  | extend operatingSystem = iif(isnotnull(osSku), osSku, osName) | where mssqlinstalled or mysqlinstalled or pgsqlinstalled | project id ,name, type, resourceGroup, subscriptionId, location, kind, osVersion, status, osSku,coreCount,totalPhysicalMemoryinGB,tags, mssqlinstalled, mysqlinstalled, pgsqlinstalled | sort by (tolower(tostring(name))) asc"