Azure ARM模板部署SQL Database时配置不生效及SKU属性问题咨询
问题:ARM模板部署SQL数据库时配置参数被忽略
我在ARM模板中配置SQL Database的片段如下:
{ "type": "Microsoft.Sql/servers/databases", "name": "[concat(variables('SqlServerName'), '/', variables('dbName'))]", "tags": { "displayName": "Database" }, "location": "[resourceGroup().location]", "apiVersion": "2020-02-02-preview", "dependsOn": [ "[resourceId('Microsoft.Sql/servers', variables('SqlServerName'))]" ], "properties": { "collation": "[parameters('dbCollation')]", "edition": "[parameters('dbEdition')]", "maxSizeBytes": "53687091200", "requestedServiceObjectiveName": "[parameters('dbRequestedServiceObjectiveName')]" } }
参数配置:
"dbEdition": { "value": "Standard" }, "dbRequestedServiceObjectiveName": { "value": "S2" }
但部署后这些配置被忽略,数据库没有按照设定的参数创建,问题出在哪里?
更新
评论里指出,对应版本的规范中edition属性已不再使用,需要改用sku属性来定义,格式示例如下:
"sku": { "name": "S2", "tier": "Standard", "capacity": 1 }
但我用PowerShell脚本获取指定区域可用SKU列表时,返回的表格表头和sku对象的属性名不一致,这就很尴尬🤦♂️
解答
核心原因:API版本与属性定义不匹配
你使用的API版本是2020-02-02-preview,这个版本已经废弃了properties下的edition和requestedServiceObjectiveName属性,必须通过独立的sku对象来配置数据库的层级、规格名称和容量。
修正后的模板片段
把原来在properties里的层级和规格配置移到sku对象中,调整后的代码如下:
{ "type": "Microsoft.Sql/servers/databases", "name": "[concat(variables('SqlServerName'), '/', variables('dbName'))]", "tags": { "displayName": "Database" }, "location": "[resourceGroup().location]", "apiVersion": "2020-02-02-preview", "dependsOn": [ "[resourceId('Microsoft.Sql/servers', variables('SqlServerName'))]" ], "sku": { "name": "[parameters('dbRequestedServiceObjectiveName')]", "tier": "[parameters('dbEdition')]", "capacity": 1 }, "properties": { "collation": "[parameters('dbCollation')]", "maxSizeBytes": "53687091200" } }
PowerShell输出与sku属性的对应关系
PowerShell返回的表格表头和sku属性是一一对应的,只是表述不同:
- 表格里的
Name对应sku的name(比如S2) - 表格里的
Tier对应sku的tier(比如Standard) - 表格里的
Capacity对应sku的capacity
直接按对应关系映射配置即可。
内容的提问来源于stack exchange,提问作者François
相关产品推荐
相关产品推荐

