Как проверить состояние операции экспорта-импорта SQL в Azure? - PullRequest
0 голосов
/ 20 июня 2019

Я выполняю импорт базы данных 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, который я создаю, нет проверок, чтобы проверить состояние операции).

Ответы [ 4 ]

0 голосов
/ 22 июня 2019

Для любого 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, но для других языков применяется тот же принцип.

0 голосов
/ 21 июня 2019

Нахожу статью Экспорт базы данных SQL Azure , в ней рассказывается о том, как проверить состояние экспорта с помощью API-интерфейса службы экспорта / экспорта базы данных Microsoft Azure SQL.

Сводка:

На портале управления нажмите на базу данных, и на панели мониторинга отобразится недавний статус экспорта.На снимке экрана 5 вы увидите, что состояние АВТОМАТИЗИРОВАННЫЙ ЭКСПОРТ для моей базы данных отображается как НИКОГДА НЕ ЭКСПОРТИРОВАННЫЙ.Это изменится после успешного экспорта.На портале управления нажмите на базу данных, и на информационной панели отобразится недавний статус экспорта.enter image description here

После завершения экспорта, который был запланирован на 1:00, завершен через 5 минут, и состояние автоматического экспорта в моей панели показывает, что то же самое.(Смотрите скриншот 6).enter image description here

Надеюсь, это поможет.

0 голосов
/ 21 июня 2019

По данным Microsoft:

«У нас есть REST API для операций импорта / экспорта в Azure sql, но у нас нет REST API для определения статуса импорта / экспорта. Клиент должен использовать Powershell для получения статуса»

Это прискорбно, поскольку у вас нет возможности написать полностью автоматизированное и продаваемое приложение, позволяющее клиентам загружать свои данные и данные на борт SaaS из устаревшего приложения.

Я также обнаружил, что невозможно определить, не удалось ли выполнить импорт, с помощью команды Powershell, поскольку у него нет URI базы данных (из-за сбоя импорта) для проверки состояния импорта.

0 голосов
/ 21 июня 2019

Я знаю, как отслеживать ход операции импорта / экспорта, если вы используете вместо этого PowerShell, но я не знаю, как отслеживать прогресс с помощью API-интерфейса REST Azure.

Если вы используете PowerShell New-AzureRmSqlDatabaseImport командлет для импорта базы данных или вы используете New-Azure RmSql Database Export для экспорта базы данных, затем вы можете использовать Get-AzureRmSqlDatabaseImportExportStatus для отслеживанияход операции импорта / экспорта.

...