我在尝试使用 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'."}]}
请问这里可能出现什么问题?
我认为错误消息解释了部署失败的原因
“GeneralPurpose”层不支持 sku“SQLDB_GP_Gen5”
tier 到 sku 的映射由输入参数
edition
和 editionToSkuMap
变量映射控制,这向我表明变量映射不正确。您可能需要使用 az CLI 深入了解某个层的有效 sku 值是什么
az sql elastic-pool list-editions -l -o table
并更新变量映射,然后再次尝试部署。也许也值得在 Azure 快速入门模板存储库上提出问题
误差不大。我发现对于 GP_Gen5,您需要指定至少 2 的容量。如果您不指定容量,您会收到消息“层‘GeneralPurpose’不支持 sku ‘SQLDB_GP_Gen5’。”这在这种情况下没有帮助。