Azure Synapse - 如何通过 Terraform 或 Azure CLI 创建 Synapse Lake 数据库/无服务器数据库

问题描述 投票:0回答:2

我通过 Azure devOps Pipelines 使用 Terraform 脚本来创建底层 Azure 资源。

不需要在 Synapse 下创建“Lake Database / Serverless Database”。

我查看了 Terraform 文档。但看不到任何执行此操作的 TF 命令 - 我很可能遗漏了一些东西。

Synapse 下有没有创建“Lake Database / Serverless Database”的 TF 命令?

另一种可以自动化的方法 - 也许是 Azure CLI 命令 - 我又找不到任何东西......?

terraform azure-synapse terraform-provider-azure azure-cli
2个回答
1
投票

根据this,Terraform 不支持创建无服务器数据库或湖数据库,并且没有可用于此目的的 CLI 脚本。您可以使用下面的 SQL 脚本创建无服务器 SQL 数据库:

CREATE DATABASE db

此脚本将成功创建Serverless SQL数据库,如下图:

enter image description here

手动创建湖数据库是唯一的选择,如下所示:

enter image description here


0
投票

Synapse - 下面在无服务器端点上创建一个无服务器数据库:

resource "null_resource" "synapse_create_db" {
  provisioner "local-exec" {
    command     = <<EOT
az login --service-principal -u ${var.deploymentSpAzureDevOps_Sec} -p ${var.deploymentSpAzureDevOps_EA_Client_Id} --tenant ${var.tenant_id}
$accessToken = az account get-access-token --resource "https://database.windows.net/" | ConvertFrom-Json | select-object -ExpandProperty accessToken
$ServerInstance = '${var.sqlOnDemand}'
$Database = "master"
function SqlQuery($ServerInstance, $Database, $AccessToken, $query)
{
 $connection = New-Object System.Data.SqlClient.SqlConnection
 $connection.ConnectionString = "Server=$ServerInstance;Database=$database;"
 $connection.AccessToken = $AccessToken
 $connection.Open()
 $command = $connection.CreateCommand()
 $command.CommandText = $query
 $result = $command.ExecuteReader()
 $table = new-object “System.Data.DataTable”
 $table.Load($result)
 $connection.Close()
 return $table
}
$SQLQuery = @"
IF NOT EXISTS (SELECT * FROM sys.databases WHERE name = '${local.databasename}')
  CREATE DATABASE [${local.databasename}];
"@
  SqlQuery -ServerInstance $ServerInstance -Database $Database -AccessToken $AccessToken -query $SQLQuery
EOT 
    interpreter = ["pwsh", "-Command"]
  }
  triggers = {
    trigger_each_run = uuid()
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.