弹性数据库池的 ARM 模板失败

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

我在尝试使用 ElasticPool 通用版部署 ARM 时遇到问题。 我必须在多个环境中尝试此操作,但它一直失败。我正在使用下面的代码,该代码引用自 Github 入门模板存储库

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "administratorLogin": {
      "type": "string",
      "metadata": {
        "description": "The SQL Server administrator login"
      }
    },
    "administratorLoginPassword": {
      "type": "securestring",
      "metadata": {
        "description": "The SQL Server administrator login password."
      }
    },
    "serverName": {
      "type": "string",
      "metadata": {
        "description": "The SQL Server name."
      }
    },
    "elasticPoolName": {
      "type": "string",
      "metadata": {
        "description": "The Elastic Pool name."
      }
    },
    "edition": {
      "type": "string",
      "defaultValue": "Standard",
      "allowedValues": [
        "Basic",
        "Standard",
        "Premium",
        "GP_Gen5",
        "BC_Gen5"
      ],
      "metadata": {
        "description": "The Elastic Pool edition."
      }
    },
    "capacity": {
      "type": "int",
      "metadata": {
        "description": "The Elastic Pool DTU or nomber of vcore."
      }
    },
    "databaseCapacityMin": {
      "type": "int",
      "defaultValue": 0,
      "metadata": {
        "description": "The Elastic Pool database capacity min."
      }
    },
    "databaseCapacityMax": {
      "type": "int",
      "metadata": {
        "description": "The Elastic Pool database capacity max."
      }
    },
    "databasesNames": {
      "type": "array",
      "defaultValue": [
        "db1",
        "db2"
      ],
      "metadata": {
        "description": "The SQL Databases names."
      }
    },
    "databaseCollation": {
      "type": "string",
      "defaultValue": "SQL_Latin1_General_CP1_CI_AS",
      "metadata": {
        "description": "The SQL Database collation."
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Location for all resources."
      }
    }
  },
  "variables": {
    "editionToSkuMap": {
      "Basic": {
        "family": null,
        "name": "BasicPool",
        "tier": "Basic"
      },
      "Standard": {
        "family": null,
        "name": "StandardPool",
        "tier": "Standard"
      },
      "Premium":  {
        "family": null,
        "name": "PremiumPool",
        "tier": "Premium"
      },
      "GP_Gen5": {
        "family": "Gen5",
        "name": "GP_Gen5",
        "tier": "GeneralPurpose"
      },
      "BC_Gen5": {
          "family": "Gen5",
          "name": "BC_Gen5",
          "tier": "BusinessCritical"
      }
    },
    "skuName": "[variables('editionToSkuMap')[parameters('edition')].name]",
    "skuTier": "[variables('editionToSkuMap')[parameters('edition')].tier]",
    "skuFamily": "[variables('editionToSkuMap')[parameters('edition')].family]"
  },
  "resources": [
    {
      "type": "Microsoft.Sql/servers",
      "apiVersion": "2020-02-02-preview",
      "location": "[parameters('location')]",
      "name": "[parameters('serverName')]",
      "properties": {
        "administratorLogin": "[parameters('administratorLogin')]",
        "administratorLoginPassword": "[parameters('administratorLoginPassword')]",
        "version": "12.0"
      }
    },
    {
      "type": "Microsoft.Sql/servers/elasticPools",
      "apiVersion": "2020-02-02-preview",
      "dependsOn": [
        "[resourceId('Microsoft.Sql/servers/', parameters('serverName'))]"
      ],
      "location": "[parameters('location')]",
      "name": "[concat(parameters('serverName'), '/', parameters('elasticPoolName'))]",
      "sku": {
        "name": "[variables('skuName')]",
        "tier": "[variables('skuTier')]",
        "family": "[variables('skuFamily')]",
        "capacity": "[parameters('capacity')]"
      },
      "properties": {
        "perDatabaseSettings": {
        "minCapacity": "[parameters('databaseCapacityMin')]",
        "maxCapacity": "[parameters('databaseCapacityMax')]"
        }
      }
    },
    {
      "type": "Microsoft.Sql/servers/databases",
      "name": "[concat(parameters('serverName'), '/', parameters('databasesNames')[copyIndex()])]",
      "location": "[parameters('location')]",
      "apiVersion": "2020-02-02-preview",
      "dependsOn": [
        "[resourceId('Microsoft.Sql/servers/', parameters('serverName'))]",
        "[resourceId('Microsoft.Sql/servers/elasticpools', parameters('serverName'), parameters('elasticPoolName'))]"
      ],
      "sku": {
          "name": "ElasticPool",
          "tier": "[variables('skuTier')]",
          "capacity": 0
      },
      "properties": {
        "collation": "[parameters('databaseCollation')]",
        "elasticPoolId": "[resourceId('Microsoft.Sql/servers/elasticpools', parameters('serverName'), parameters('elasticPoolName'))]"
      },
      "copy": {
        "name": "addDatabasesInElasticPool",
        "count": "[length(parameters('databasesNames'))]"
      }
    },
    {
      "apiVersion": "2020-02-02-preview",
      "dependsOn": [
        "[resourceId('Microsoft.Sql/servers/', parameters('serverName'))]"
      ],
      "location": "[parameters('location')]",
      "name": "[concat(parameters('serverName'), '/', 'AllowAllWindowsAzureIps')]",
      "properties": {
        "endIpAddress": "0.0.0.0",
        "startIpAddress": "0.0.0.0"
      },
      "type": "Microsoft.Sql/servers/firewallrules"
    }
  ]
}

部署失败并出现此错误

{"code":"DeploymentFailed","message":"At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details.","details":[{"code":"InvalidTierSkuCombination","message":"The tier 'GeneralPurpose' does not support the sku 'SQLDB_GP_Gen5'."}]}

请问这里可能出现什么问题?

azure azure-sql-database azure-resource-manager
3个回答
0
投票

我认为错误消息解释了部署失败的原因

“GeneralPurpose”层不支持 sku“SQLDB_GP_Gen5”

tier 到 sku 的映射由输入参数

edition
editionToSkuMap
变量映射控制,这向我表明变量映射不正确。您可能需要使用 az CLI 深入了解某个层的有效 sku 值是什么

az sql elastic-pool list-editions -l -o table

并更新变量映射,然后再次尝试部署。也许也值得在 Azure 快速入门模板存储库上提出问题


0
投票

请从 GitHub 下载 this 模板(template.json 和parameters.json),该模板将允许您创建一个包含一个数据库的 Azure SQL 数据库弹性池 - 通用型。


0
投票

误差不大。我发现对于 GP_Gen5,您需要指定至少 2 的容量。如果您不指定容量,您会收到消息“层‘GeneralPurpose’不支持 sku ‘SQLDB_GP_Gen5’。”这在这种情况下没有帮助。

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