Как исправить «Структуры данных для сохранения диспетчера карт сегментов не существуют в целевом местоположении». в azure elastic jobs

#azure #azure-elastic-sharding

#azure #azure-elastic-sharding

Вопрос:

У меня есть приложение, которое использует многопользовательскую модель с одной базой данных для каждого клиента. Я использую карту сегментов, чтобы отслеживать, где находится база данных арендатора. Когда я попытался создать эластичное задание для запуска миграций, я установил AzSqlElasticJobTarget в свою базу данных shardmap, все работает нормально, и задание создается, но затем задание завершается с ошибкой, и я получаю следующую ошибку:

 Failed to determine members of SqlShardMapTarget (server name '***', server location '***.database.windows.net', database '***', shard map '***'): Data structures for shard map manager persistence do not exist at the target location.
  

Я уже зашел в БД, и на нем есть схема управления __SHARD со всей информацией о сегментах.

 # Create TenantsPoolGroup target group
$TenantsGroup = $JobAgent | New-AzSqlElasticJobTargetGroup -Name 'TargetGroup'
$TenantsGroup | Add-AzSqlElasticJobTarget -ServerName $catalogServerName -ShardMapName $config.CatalogShardMapName -DatabaseName $config.CatalogDatabaseName -RefreshCredentialName $config.JobCredentialName

Write-Output "Creating a new job"
$timestamp = Get-Date -Format o | foreach {$_ -replace ":", "_"}
$timestamp = $timestamp | foreach {$_ -replace ".", "_"}
$timestamp = $timestamp | foreach {$_ -replace "-", "_"}
$JobName = "Migration-$timestamp"
$Job = $JobAgent | New-AzSqlElasticJob -Name $JobName -RunOnce

Write-Output "Creating job steps"
$SqlText = Get-Content -Path "$PSScriptRootscript-entities.sql" -Raw
$Job | Add-AzSqlElasticJobStep -Name "step1" -TargetGroupName 'TargetGroup' -CredentialName $config.JobCredentialName -CommandText $SqlText

Write-Output "Start a new execution of the job..."
$JobExecution = $Job | Start-AzSqlElasticJob
  

Ответ №1:

Я, наконец, обнаружил, что пользователь, используемый для доступа к каталогу арендаторов, не имел РАЗРЕШЕНИЯ propper для доступа к СХЕМЕ ::__ShardManagement, лол, мой плохой