如何在 Azure 中检查 SQL 导入导出操作的状态?

问题描述 投票:0回答:6

我正在使用 REST 管理 API 使用 BacPac 文件将 SQL 数据库导入到 Azure。我需要能够检查导入的状态,因为 Azure 不允许我在导入成功时发送事件。

这是我正在执行的操作的文档: https://learn.microsoft.com/en-us/rest/api/sql/databases%20-%20import%20export/import

我已经尝试使用 Azure 的 Analysis Services API 通过操作 ID 和操作发生的区域来检查操作的状态。但是,调用此端点将返回 404 未找到。

这里是 Azure 的 Analysis Services API 端点的文档,我尝试使用导入的操作 ID 及其发生的区域进行调用: https://learn.microsoft.com/en-us/rest/api/analysisservices/servers/listoperationresults

我期望 Analysis Services 向我提供我使用 Azure 管理 API 开始的导入/导出操作的状态。这样做会导致 404,所以我不确定我是否调用了正确的 API 端点(我仔细检查以确保我正在构建以检查操作状态的 URI 中没有拼写错误)。

azure azure-sql-database azure-resource-manager azure-sql-server azure-rest-api
6个回答
6
投票

在数据库中转到概述 -> 在底部检查通知 -> 您确实单击了该图像

enter image description here

enter image description here


2
投票

如果您使用 PowerShell,我确实知道如何跟踪导入/导出操作的进度,但我不知道如何使用 Azure REST API 跟踪进度。

如果您使用 PowerShell New-AzureRmSqlDatabaseImport cmdlet 导入数据库或使用 New-AzureRmSqlDatabaseExport 导出数据库,则可以使用 Get-AzureRmSqlDatabaseImportExportStatus 跟踪导入进度/出口操作。


1
投票

对于任何 api,例如 BeginX(),都有一个相应的 api X() 等待完成。在这种情况下,请使用 Import() 代替 BeginImport()

如果您希望更直接地控制轮询,那么您可以查看 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,但对于其他语言,同样的原则也适用。


1
投票

要监控导入进度,请打开数据库的服务器页面,然后在“设置”下选择“导入/导出历史记录”。成功后,导入状态为“已完成”。

https://learn.microsoft.com/bs-latn-ba/azure/sql-database/sql-database-import?view=azureipps&tabs=azure-powershell


0
投票

我找到一篇文章Azure SQL 数据库导出,它讨论了如何使用 Microsoft Azure SQL 数据库导入/导出 REST 服务 API 检查导出的状态。

总结:

在管理门户中,单击数据库,仪表板将显示最近的导出状态。在屏幕截图 5 中,您将看到我的数据库的 AUTOMATED EXPORT 状态显示为 NEVER EXPORTED。一旦成功导出,这种情况就会改变。 在管理门户中,单击数据库,仪表板将显示最近的导出状态。 enter image description here

最终计划在凌晨 1 点导出完成后,5 分钟后完成,我的仪表板中的自动导出状态显示相同。 (参见屏幕截图 6)。 enter image description here

希望这有帮助。


0
投票

根据微软的说法:

“我们有用于将操作导入/导出到 Azure sql 的 REST API,但我们没有任何 REST API 来查找导入/导出状态。客户应使用 Powershell 来获取状态”

我发现使用 Powershell 命令无法知道导入是否失败,因为失败的导入永远不会创建并返回 404(因为导入失败)。

您可以实施的一种解决方案是最佳猜测方法,其中强制执行 48 小时的限制,任何花费超过此时间的导入都会被解释为失败。如果您知道大多数 SQL 数据库都是在 10 分钟的时间窗口内导入的,那么务实地说,任何耗时超过 48 小时的 SQL 导入都会完全失败。

您还可以选择与上述时间窗口结合使用对数后退方法,在检查状态时逐渐后退。这将使您、微软和地球免受不必要的浪费 🙂

© www.soinside.com 2019 - 2024. All rights reserved.