【问题标题】:Call Elastic Job from a Runbook in the Automation account从自动化账户中的 Runbook 调用 Elastic 作业
【发布时间】:2022-02-02 16:01:29
【问题描述】:

我在 Azure SQL 中有一个名为 DatabaseA 的数据库 - 注意 - 不是托管实例,也不是虚拟机上的 SQL。

DatabaseA 有一个与之关联的弹性作业代理,它调用 ElasticJobA,它计划每晚运行并且它可以工作。

ElasticJobA 通过作业表中的内置调度从 Azure SQL 中的 T-SQL 调用。 ElasticJobA 执行一系列步骤来创建 Fact 表,我将其用作名为 SSASTabularCubeB 的 SSAS 表格数据库的源。

我使用 Runbooks 来处理 SSAS 表格数据库,效果很好。它计划在弹性作业完成后运行,但不依赖于它。这意味着如果我的 Elastic 作业在 DatabaseA 上失败,SSASTabularDatabaseB 仍会运行,这会导致问题。

为了阻止这种情况发生,我想从处理表格数据库的同一 Runbook 脚本中调用弹性作业。如果我能做到这一点,我可以让它停止(即不运行 SSASTabularDatabaseB,除非 ElasticJobA 成功完成)。因此,如果 ElasticJobA 失败,它不会尝试处理 SSASTabularDatabaseB。

有人知道怎么做吗?

我用来处理 SSASTabularDatabaseB 的 Runbook 脚本如下所示:

$_Credential = Get-AutomationPSCredential -Name "ServicePrincipal"

Invoke-ProcessASDatabase -DatabaseName "SSASTabularDatabaseB" 
                            -RefreshType "Full" 
                            -Server "asazure://uksouth.asazure.windows.net/MyServer" 
                            -ServicePrincipal -Credential $_Credential

我知道可能还有其他方法可以做到这一点,但请不要建议我迁移到 Azure 中 VM 上的托管实例或完整 SQL。我们需要使用 Azure SQL。

非常感谢任何帮助。

【问题讨论】:

    标签: azure-automation azure-runbook


    【解决方案1】:

    如果this Azure 文档中提供的步骤适合您的情况,那么我相信您可以使用 PowerShell cmdlet Start-AzSqlElasticJob 执行该作业,它还会返回一个作业执行 ID,可以轮询该 ID 以查看其状态。然后,根据状态您可以处理 SSAS 表格数据库。

    如果上述方法不适合您的用例,则使用 Runbook 中的 T-SQL 执行作业,查看是否可以将 SqlServer PowerShell 模块导入您的 Azure 自动化帐户模块,然后使用 Runbook 执行使用Invoke-SqlCmd PowerShell cmdlet 或使用 System.Data.SqlClient.SqlCommand、System.Data.SqlClient.SqlDataAdapter、System.Data.DataSet 类型的 PowerShell 对象作为 SQL 查询作业。然后,根据状态您可以处理 SSAS 表格数据库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-11
      • 2015-11-03
      • 2019-05-17
      • 2016-11-13
      • 1970-01-01
      • 1970-01-01
      • 2022-08-21
      • 2014-05-14
      相关资源
      最近更新 更多