Azure Terraform添加数据库至弹性池遇ElasticPoolSkuCombinationInvalid错误求助
问题
尝试通过Terraform在Azure部署以下资源:
- mssql server
- mssql database
- mssql elastic pool
对应的Terraform代码如下:
resource "azurerm_mssql_server" "server" { administrator_login = "" administrator_login_password = "" location = var.location name = "server" resource_group_name = azurerm_resource_group.resource-group.name version = "12.0" } resource "azurerm_mssql_elasticpool" "sql-elasticpool" { location = var.location name = "sql-elasticpool" resource_group_name = azurerm_resource_group.resourcegroup.name server_name = azurerm_mssql_server.server.name max_size_gb = 4.8828125 sku { capacity = 50 name = "BasicPool" tier = "Basic" } per_database_settings { max_capacity = 5 min_capacity = 0 } } resource "azurerm_mssql_database" "database" { name = "database" server_id = azurerm_mssql_server.server.id elastic_pool_id = azurerm_mssql_elasticpool.sql-elasticpool.id }
执行时出现以下错误:
Error: waiting for create/update of Database: (Name "database" / Server Name "server" / Resource Group "resource group"): Code="ElasticPoolSkuCombinationInvalid" Message="Elastic pool 'sql-elasticpool' and sku 'Basic' combination is invalid."
数据库和弹性池均采用Basic SKU,省略数据库SKU配置后仍出现相同错误,需排查问题原因。
问题排查与解决
核心错误原因
Azure SQLBasic层级弹性池不支持配置per_database_settings中的max_capacity和min_capacity参数。Basic池的数据库资源是固定共享池资源的,无需单独设置数据库级别的容量限制,强行配置会触发SKU组合无效的错误。
此外代码中还有两处细节问题:
- 资源组引用不一致:
azurerm_resource_group.resource-group.name和azurerm_resource_group.resourcegroup.name需统一命名 - Basic池的
max_size_gb建议使用整数(如5GB),避免小数带来的潜在兼容性问题
修正后的Terraform代码
resource "azurerm_mssql_server" "server" { administrator_login = "your-admin-account" administrator_login_password = "your-strong-password" location = var.location name = "server" resource_group_name = azurerm_resource_group.resourcegroup.name version = "12.0" } resource "azurerm_mssql_elasticpool" "sql-elasticpool" { location = var.location name = "sql-elasticpool" resource_group_name = azurerm_resource_group.resourcegroup.name server_name = azurerm_mssql_server.server.name max_size_gb = 5 sku { capacity = 50 name = "BasicPool" tier = "Basic" } # 移除Basic层级不支持的per_database_settings配置 } resource "azurerm_mssql_database" "database" { name = "database" server_id = azurerm_mssql_server.server.id elastic_pool_id = azurerm_mssql_elasticpool.sql-elasticpool.id }
补充说明
- 若需要自定义数据库级别的容量限制,需改用Standard或Premium层级的弹性池
- 务必配置有效的管理员账号和密码,避免部署时出现身份验证错误
内容的提问来源于stack exchange,提问作者Nayden Van
相关产品推荐
相关产品推荐

