You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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组合无效的错误。

此外代码中还有两处细节问题:

  1. 资源组引用不一致:azurerm_resource_group.resource-group.name和azurerm_resource_group.resourcegroup.name需统一命名
  2. 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 11:05:16