如何使用Azure管理库监控数据库创建的进度?

时间:2015-09-18 14:39:47

标签: azure automation azure-sql-database azure-management

我正在尝试弄清楚如何监控使用Windows Azure管理库发出的请求的进度,以便我们可以向客户显示。我们在Akka.Net演员中做了Async。

例如我正在创建一个像

这样的数据库
 SqlManagementClient.Databases.CreateAsync(Server, databaseCreateParameters);

基本上我得到DatabaseCreateResponse的结果,我可以检查它是否成功。无论如何我可以监控进度。我假设我可以获取请求ID,然后查询状态。我如何获得请求ID?我该如何查询?

我只是希望在Azure门户网站上显示进度 - 理想情况下可以估算完成的时间。

或者,我只是假装进度报告并假设其中没有失败而没有问题吗?

这将适用于我们需要创建的许多项目,如网站,DNS,存储等。

1 个答案:

答案 0 :(得分:1)

DatabaseCreateResponse有一个RequestId属性,可用于获取操作状态。要查询操作的状态,您可以使用Get Operation Status Rest API。

您必须以轮询方式调用此API才能获取状态,该状态将是失败 InProgress 成功。上面的链接显示了如何在轮询代码中构造对此的调用的示例。您无法准确估计完成操作所需的时间。所以,是的,除非你得到 InProgress 之外的其他人,否则你会认为没有失败。

由于您正在使用管理库,因此您的代码可能看起来像这样,以获取RequestId并调用 GetOperationStatusAsync 来检查状态。

var dbCreateRequestId = dbCreateResponse.RequestId;
var opStatus = await mgmtClient.GetOperationStatusAsync(dbCreateRequestId, cancellationToken);

switch (opStatus.Status)
{
    case OperationStatus.Failed:
        // Report failed
        break;

    case OperationStatus.InProgress:
        // Report in progress
        break;

    case OperationStatus.Succeeded:
        // Report succeeded
        break;
}

此外,您可以使用此方法检查您提到的其他项目的状态。只需获取有关这些项的操作的RequestId,并调用相同的方法。