Как проверить состояние операции экспорта-импорта SQL в Azure?
Я выполняю импорт базы данных SQL с помощью файла BacPac в Azure с использованием API-интерфейса управления REST. Мне нужно иметь возможность проверить состояние импорта, поскольку Azure не позволяет мне отправлять события, когда импорт завершается успешно.
Вот документация для выполняемой мной операции: https://docs.microsoft.com/en-us/rest/api/sql/databases%20-%20import%20export/import
Я уже пытался использовать API служб аналитики Azure для проверки состояния операции по идентификатору операции и региону, в котором она произошла. Однако при вызове этой конечной точки мне возвращается значение 404, не найденное.
Вот документация для конечной точки API служб аналитики Azure, которую я пытаюсь вызвать с помощью идентификатора операции импорта и региона, в котором это произошло: https://docs.microsoft.com/en-us/rest/api/analysisservices/servers/listoperationresults
Я ожидаю, что службы Analysis Services предоставят мне статус операции импорта / экспорта, которую я начал использовать API управления Azure. В результате получается 404, поэтому я не уверен, что вызываю правильную конечную точку API (я дважды проверил, чтобы убедиться, что в URI, который я создаю, нет проверок, чтобы проверить состояние операции).
6 ответов
Я знаю, как отслеживать ход выполнения операции импорта / экспорта, если вы используете вместо этого PowerShell, но я не знаю, как отслеживать ход выполнения с помощью API-интерфейса REST Azure.
Если вы используете командлет PowerShell New-AzureRmSqlDatabaseImport для импорта базы данных или вы используете экспорт базы данных New-Azure RmSql для экспорта базы данных, вы можете использовать Get-AzureRmSqlDatabaseImportExportStatus для отслеживания хода операции импорта / экспорта.
Для любого API, такого как BeginX (), существует соответствующий API X (), который ожидает завершения. В этом случае вместо BeginImport () используйте Import ().
Если вы хотите иметь более прямой контроль над опросом, то вы можете заглянуть внутрь определения Import и напрямую использовать нижний уровень, то есть BeginImportWithHttpMessagesAsync () и затем GetPostOrDeleteOperationResultAsync ():
public async Task<AzureOperationResponse<ImportExportResponse>> ImportWithHttpMessagesAsync(string resourceGroupName, string serverName, string databaseName, ExportRequest parameters, Dictionary<string, List<string>> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken))
{
// Send request
AzureOperationResponse<ImportExportResponse> _response = await BeginImportWithHttpMessagesAsync(resourceGroupName, serverName, databaseName, parameters, customHeaders, cancellationToken).ConfigureAwait(false);
// Poll for completion
return await Client.GetPostOrDeleteOperationResultAsync(_response, customHeaders, cancellationToken).ConfigureAwait(false);
}
Этот ответ специально для.net, но для других языков применяется тот же принцип.
Чтобы отслеживать процесс импорта, откройте страницу сервера базы данных и в разделе "Настройки" выберите "История импорта / экспорта". В случае успеха импорт получает статус "Завершено".
По словам Microsoft:
"У нас есть REST API для операций импорта / экспорта в Azure SQL, но у нас нет REST API для определения статуса импорта / экспорта. Клиент должен использовать Powershell для получения статуса"
Это прискорбно, поскольку вы не можете написать полностью автоматизированное и продаваемое приложение, позволяющее клиентам загружать свои данные и данные на борт в SaaS из устаревшего приложения.
Я также обнаружил, что невозможно определить, не удалось ли выполнить импорт, с помощью команды Powershell, поскольку у него нет URI базы данных (из-за сбоя импорта) для проверки состояния импорта.
Я нахожу статью " Экспорт базы данных Azure SQL", в которой рассказывается о том, как проверить состояние экспорта с помощью API-интерфейса службы экспорта / экспорта базы данных Microsoft Azure SQL.
Резюме:
На портале управления нажмите на базу данных, и на информационной панели отобразится недавний статус экспорта. На снимке экрана 5 вы увидите, что состояние АВТОМАТИЗИРОВАННЫЙ ЭКСПОРТ для моей базы данных отображается как НИКОГДА НЕ ЭКСПОРТИРОВАННЫЙ. Это изменится после успешного экспорта. На портале управления нажмите на базу данных, и на информационной панели отобразится недавний статус экспорта.
После завершения экспорта, который в конечном итоге был запланирован на 1:00, завершен через 5 минут, и состояние автоматического экспорта на моей панели показывает, что то же самое. (Смотрите скриншот 6).
Надеюсь это поможет.