使用Bicep将数据库映射到50 DTU标准弹性池的配置问题
问题解决:Bicep创建SQL数据库关联弹性池时的索引越界错误
错误原因分析
你遇到的'The language expression property array index '1' is out of bounds.'错误,大概率是数据库SKU配置与弹性池关联逻辑冲突导致的:要么给数据库设置了独立数据库的SKU参数(比如单库的S0/S1)同时尝试关联弹性池,要么SKU的capacity参数格式不符合要求(比如用了数字而非字符串类型)。
正确配置步骤
1. 50 DTU Standard弹性池的SKU配置
确保弹性池的SKU参数正确,注意capacity必须是字符串类型:
resource sqlServer 'Microsoft.Sql/servers@2023-05-01-preview' = { name: 'your-sql-server-name' location: resourceGroup().location properties: { administratorLogin: 'adminuser' administratorLoginPassword: 'your-strong-password' } } resource sqlElasticPool 'Microsoft.Sql/servers/elasticPools@2023-05-01-preview' = { parent: sqlServer name: 'standard-50dtu-pool' properties: { sku: { name: 'StandardPool' tier: 'Standard' capacity: '50' // 必填字符串类型,对应50 DTU } maxSizeBytes: 34359738368 // 可选,示例为32GB,按需调整 } }
2. 数据库关联弹性池的配置
数据库无需配置独立SKU参数,只需指定elasticPoolId指向弹性池资源ID即可(若要显式写SKU,仅需name: 'ElasticPool'):
resource sqlDatabase 'Microsoft.Sql/servers/databases@2023-05-01-preview' = { parent: sqlServer name: 'your-db-name' properties: { elasticPoolId: sqlElasticPool.id // 核心:关联到目标弹性池 // 可选:若显式设置SKU,仅需指定name为ElasticPool,无需其他参数 sku: { name: 'ElasticPool' } } }
关键注意事项
- 数据库关联弹性池后,所有性能参数(DTU、存储等)由弹性池统一管控,无需在数据库层级重复配置
- 弹性池的
capacity必须是字符串类型,务必加单引号(比如'50'而非50),否则会触发类型错误 - 确保
elasticPoolId的资源ID正确,通过Bicep的parent关联或直接引用弹性池的id属性可避免拼写错误
内容的提问来源于stack exchange,提问作者The Senator
相关产品推荐
相关产品推荐

