【问题标题】:Auto Azure SQL DB Creation -DACPAC task how to configure database Azure pricing modelAuto Azure SQL DB Creation -DACPAC 任务如何配置数据库 Azure 定价模型
【发布时间】:2019-10-28 00:57:29
【问题描述】:

我刚刚发现 MS 正在将创建时的默认 Azure PaaS DB 配置设置更改为使用 Vcor​​e 而不是 DTU。我正在使用 Azure Devops 通过 DACPAC 使用 Azure SQL 任务从 GithHub 存储库构建数据库。我想为我的构建保留 DTU 模型。

我可以看到的实现此选项的选项是:

  • 在 DACPAC 部署任务期间进行配置...我无法在任何地方找到如何执行此操作。
  • 预先创建数据库,然后在其中运行 DACPAC 文件。
  • 为创建的任何新 DB 设置 azure 默认值。我一直找不到这样做的方法。

对于第二个选项,我已成功使用下面的代码 sn-p 创建数据库,但我无法找到如何使用“例如标准 S0 10 DTU 创建一个”。

感谢您的任何建议..

New-AzureRmSqlDatabase -ResourceGroupName $ResourceGroup -ServerName $Servername -DatabaseName $DataBaseName

【问题讨论】:

    标签: azure-devops azure-sql-database config


    【解决方案1】:

    通常,您希望通过各种幂等配置语言来预配您的 Azure 资源。 ARM 模板是原生的,Terraform 是一种流行的替代方案。在每次部署开始时运行您的 ARM 模板部署,然后您的应用程序运行所需的所有基础架构都将就位并正确配置。

    如果您想使用 PowerShell 执行此操作,您正在寻找的 parametersEditionRequestedServiceObjectiveName。 IE。 -Edition Standard -RequestedServiceObjectiveName S0.

    【讨论】:

    • 谢谢丹尼尔,你知道我将如何指定 DTU 数量吗?有没有一种方法可以查询现有配置,为您提供创建所需的所有参数?
    • Get-AzureRmSqlServerServiceObjective(或者如果您使用的是 Az 模块,Get-AzSqlServerServiceObjective)会为您提供服务目标及其提供的 DTU 的列表。您不指定 DTU,而是指定与一定数量的 DTU 相对应的服务目标。
    【解决方案2】:

    由于不断的 Azure 流失导致文档中的缺陷导致许多错误开始后,我有了一个工作脚本。此脚本有效,并且 Web 挂钩允许从 Azure Devops CI 调用它。

    param
    (
    [Parameter (Mandatory = $false)]
    [object] $WebhookData
    )
    
    Write-Output $WebhookData
    # If runbook was called from Webhook, WebhookData will not be null.
    if ($WebhookData) {
    
    # Retrieve Params from Webhook request body
    $params = (ConvertFrom-Json -InputObject $WebhookData.RequestBody)
    
    foreach ($param in $params)
    {
        $DatabaseName = $param.DatabaseName
        $Edition = $param.Edition
        $PricingTier=$param.PricingTier
        Write-Output "Found $DatabaseName"
        Write-Output "Found $Edition"
        Write-Output "Found $PricingTier"
    
    }
    
    
    $connectionName = "AzureRunAsConnection"
    
    try
    {
        # Get the connection "AzureRunAsConnection "
        $servicePrincipalConnection=Get-AutomationConnection -Name $connectionName         
    
        "Logging in to Azure..."
        Add-AzureRmAccount `
    -ServicePrincipal `
    -TenantId $servicePrincipalConnection.TenantId `
    -ApplicationId $servicePrincipalConnection.ApplicationId `
    -CertificateThumbprint $servicePrincipalConnection.CertificateThumbprint 
    }
    catch {
        if (!$servicePrincipalConnection)
        {
            $ErrorMessage = "Connection $connectionName not found."
            throw $ErrorMessage
        } else{
            Write-Error -Message $_.Exception
            throw $_.Exception
        }
    }
    
    $ServerName = "ServerName"
    $ResourceGroup = "ResourceGroupName"
    #$PricingTierLocal ="S2"
    #$EditionLocal ="Standard"
    
    Set-AzureRmSqlDatabase  -ResourceGroupName $ResourceGroup -ServerName $ServerName -DatabaseName $DatabaseName  -Edition  $Edition  -RequestedServiceObjectiveName   $PricingTier
    
    }
    else {
    # Error
    write-Error "This runbook is meant to be started from an Azure webhook only."
    }
    

    【讨论】:

      猜你喜欢
      • 2019-05-12
      • 1970-01-01
      • 2019-07-13
      • 2018-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-25
      • 2016-10-05
      相关资源
      最近更新 更多