gpt4 book ai didi

azure - Terraform Azure - 将现有的 Azure SQL 数据库移至弹性池中

转载 作者:行者123 更新时间:2023-12-03 00:02:22 25 4
gpt4 key购买 nike

我有一个现有的 Azure SQL Server 和 1 个最初未创建到弹性池中的数据库。 Terraform 已部署此功能并保留状态。

# Define SQL Server 1
resource "azurerm_mssql_server" "go-1" {
name = "sql-sandbox-server01
resource_group_name = data.azurerm_resource_group.env-resourcegroup.name
location = data.azurerm_resource_group.env-resourcegroup.location
version = var.azsqlserver1version
administrator_login = var.azsqlserver1sauser
administrator_login_password = random_password.sql-password.result
public_network_access_enabled = "true" # set to false with vNet integration
}
# Define SQL Database 1 - non-ElasticPool
resource "azurerm_mssql_database" "go-1" {
name = "sqldb-sandbox-01"
server_id = azurerm_mssql_server.go-1.id
sku_name = "Basic"
}

由于现在已经决定使用弹性池(对于这个单一数据库和其他数据库),数据库“sqldb-sandbox-01”现在已经包含表和数据。

我已将其添加到我的 main.tf 文件中...并且工作正常,弹性池已创建...

resource "azurerm_sql_elasticpool" "go-1" {
name = "sqlep-sandbox-pool01
resource_group_name = data.azurerm_resource_group.env-resourcegroup.name
location = data.azurerm_resource_group.env-resourcegroup.location
server_name = azurerm_mssql_server.go-1.name
edition = "Basic"
dtu = 50
db_dtu_min = 0
db_dtu_max = 5
pool_size = 5000
}

我的问题是...如何将现有的“sqldb-sandbox-01”移动到 Terraform 中的弹性池中,而不破坏数据库并重新创建它?

我尝试了这一点,只是添加了单行elastic_pool_id,但正如文档所述,它将再次销毁/创建数据库...

# Define SQL Database 1 - non-ElasticPool
resource "azurerm_mssql_database" "go-1" {
name = var.azsqldb1name
server_id = azurerm_mssql_server.go-1.id
sku_name = var.azsqldb1sku
elastic_pool_id = azurerm_sql_elasticpool.go-1.id
}

我很高兴听到任何处于相同位置并设法找到方法的人的来信。

将现有的同一服务器数据库移动到弹性池中可以在 Azure 门户 GUI 中轻松实现,因此我希望在这里实现类似的操作。我进行了一些搜索,但找不到任何特定于此简单任务的内容。

提前致谢

最佳答案

对于现有的 Azure SQL 数据库和弹性池。直接添加单行elastic_pool_id在 block 中将强制创建新资源。即使这种显示在 Azure 门户中也不明显。

enter image description here

您可以使用本地 PowerShell 脚本将现有数据库添加到新的弹性池,而不是这样做。 local-exec provisioner创建资源后调用本地可执行文件。

这是我这边的一个工作示例。

resource "null_resource" "add_pool" {

provisioner "local-exec" {

command = <<-EOT
Set-AzSqlDatabase `
-ResourceGroupName "${azurerm_resource_group.example.name}" `
-ServerName "${azurerm_mssql_server.example.name}" `
-DatabaseName "${azurerm_mssql_database.test.name}" `
-ElasticPoolName "${azurerm_sql_elasticpool.go-1.name}"
EOT

interpreter = ["PowerShell", "-Command"]

}

}

关于azure - Terraform Azure - 将现有的 Azure SQL 数据库移至弹性池中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62593106/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com