如何使用逻辑应用扩展 Azure SQL DW up/down

How to scale Azure SQL DW up/down using a Logic app

我知道可以为 resume/pause Azure SQL 数据仓库创建逻辑应用程序,同样可以在 Azure 数据工厂中的管道中使用。我想知道是否有任何方法可以类似地创建一个逻辑应用程序并在 ADF 中使用它来放大或缩小 DW 单元。原因是,我的管道的某些组件要求 DW 在更高的单位为 运行,而对于管道的某些部分,它可以保持在最低限度。任何帮助将不胜感激!

Azure SQL 数据仓库可以扩展 up/down via PowerShell, T-SQL, or Rest API。逻辑应用程序可以执行 SQL 语句,调用缩放 DW up/down 的 Azure Functions,或直接调用 API。

选项一:T-SQL. 添加一个t-SQL Action。 Azure SQL DW(相对于 DB)有一个单独的连接器。确保连接到 Master 数据库而不是用户数据库(这可能会破坏交易,具体取决于您的安全要求)。让它执行类似于

的查询
ALTER DATABASE mySampleDataWarehouse
MODIFY (SERVICE_OBJECTIVE = 'DW300c');

您可能需要为轮询添加等待或循环,因为缩放需要几秒钟的时间,您需要等待它完成。

选项 2:Azure 函数。 为 Function App 创建一个 Azure Function and use the Logic App to call that. There is a template available 以缩放您可能从中复制的 DW up/down。它使用计时器触发器,但你希望 HTTP 触发器从逻辑应用程序调用。为此,您需要一个服务主体帐户,该帐户在与您的数据仓库实例相同的订阅下具有贡献者访问权限。

编辑:我不确定您的数据工厂控制流是什么样的,但您可能只是在其中扩展 up/down 而不是使用逻辑应用程序。

如果您确实需要从逻辑应用程序实现此目的(例如,您更喜欢从逻辑应用程序轻松安排而不是 Azure Functions 中的 CRON 表单)或者逻辑应用程序是您选择的集成解决方案,那么这是可能的。只需将 HTTP 任务与 PATCH 调用和 Azure SQL 数据仓库 REST API 一起使用,它具有 pauseresume 方法,还允许您传入具有实际服务水平 objective,例如

在我的示例中,我将以下设置用于服务主体身份验证:

Method:         PATCH
URI:            https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Sql/servers/{server-name}/databases/{database-name}/pause?api-version=2014-04-01-preview
Headers:        (leave empty)
Queries:        (leave empty)
Body:           
{
"properties": {
    "requestedServiceObjectiveName": "DW100c"
    }
}
Authentication: Active Directory OAuth
Tenant:         (your tenant)
Audience:       https://management.core.windows.net/
Client ID:      (your client id)
Credential Type: Secret
Secret:         (your secret)

将服务 objective 设置为您想要的任何值 - 我的示例使用 DW100c 这实际上是缩小操作的一部分:100 是您可以达到的最低值。请注意 REST API activity 中的示例 JSON 不正确/无效 JSON。只需为第 2 代仓库添加报价,您需要在服务级别 objective 之后指定 "c",例如 "DW3000c"