使用azurerm_mssql_database是否必须依赖azurerm_mssql_server?
Azure SQL数据库必须依赖SQL Server实例创建吗?
我目前用Terraform创建Azure SQL数据库的代码如下:
resource "azurerm_mssql_server" "sqlserver" { name = azurecaf_name.names.results["azurerm_mssql_server"] resource_group_name = azurerm_resource_group.default_rg.name location = azurerm_resource_group.default_rg.location version = "12.0" administrator_login = var.mssql_admin_user administrator_login_password = var.mssql_admin_password } resource "azurerm_mssql_database" "sqldatabase" { name = azurecaf_name.names.results["azurerm_mssql_database"] server_id = azurerm_mssql_server.sqlserver.id sku_name = "Basic" }
现在的流程是先创建SQL Server再创建数据库,我想咨询:是否必须依赖服务器才能创建数据库?能不能直接创建数据库而无需先创建服务器?当前这种先建服务器再建库的方式让我感觉有些奇怪。
回答:
Azure SQL的服务架构决定了数据库必须隶属于SQL Server实例
这是Azure原生服务的设计规则,不管用Terraform、Azure Portal还是Azure CLI,都无法脱离SQL Server实例单独创建Azure SQL数据库。SQL Server实例是数据库的管理边界,负责处理身份验证、连接策略、防火墙规则等核心管理功能,数据库必须依附于它存在。Terraform的资源定义也强制了这个依赖关系
在azurerm_mssql_database资源中,server_id是必填参数,必须指定一个已存在的SQL Server资源ID。你的代码中通过引用azurerm_mssql_server.sqlserver.id建立了隐式依赖,Terraform会自动先创建服务器再创建数据库,这是符合规范的写法,并非不合理的设计。即使是Azure SQL的无服务器计算层,本质上依然依附于SQL Server实例,只是计算资源按需伸缩,不存在完全脱离服务器的独立数据库。
内容的提问来源于stack exchange,提问作者me.at.coding
相关产品推荐
相关产品推荐

