恢复Azure SQL无服务器数据库后,如何用PowerShell设置ComputeModel为Serverless?
恢复Azure SQL Serverless数据库后恢复ComputeModel与标签的解决方案
问题背景
使用Get-AzSqlDeletedDatabaseBackup和Restore-AzSqlDatabase PowerShell cmdlet恢复已删除的Azure SQL Database(Serverless)后,恢复操作成功,但数据库的标签和ComputeModel未随数据库一同恢复。
已尝试的无效操作:
- 执行
Set-AzSqlDatabase仅指定ComputeModel和AutoPauseDelayInMinutes参数,未生效 - 通过
Set-AzResource修改Kind属性,修改未生效
解决办法
1. 恢复ComputeModel为Serverless
恢复后的数据库默认采用Provisioned计算模型,需通过Set-AzSqlDatabase补充完整的Serverless配置参数才能生效:
Set-AzSqlDatabase -ResourceGroupName $resourcegroupname ` -ServerName $servername ` -DatabaseName $databasename ` -Edition "GeneralPurpose" ` -ComputeModel "Serverless" ` -AutoPauseDelayInMinutes 45 ` -MinCapacity 0.5 ` -MaxCapacity 4
注意:
Edition必须指定为GeneralPurpose,Serverless仅支持该版本MinCapacity和MaxCapacity需匹配原数据库配置,或按需调整(范围:0.5~1024 vCore)
2. 恢复数据库标签
方式一:通过Set-AzSqlDatabase直接覆盖标签
# 定义原数据库的标签哈希表 $tags = @{ "Environment" = "Production" "Project" = "MyApp" } Set-AzSqlDatabase -ResourceGroupName $resourcegroupname ` -ServerName $servername ` -DatabaseName $databasename ` -Tag $tags
方式二:使用Update-AzTag增量更新标签
如果需要保留现有标签并添加新标签,可使用该命令:
# 获取数据库资源ID $resourceId = "/subscriptions/<你的订阅ID>/resourceGroups/$resourcegroupname/providers/Microsoft.Sql/servers/$servername/databases/$databasename" # 定义要添加的标签 $newTags = @{ "Owner" = "dev-team" } Update-AzTag -ResourceId $resourceId -Tag $newTags -Operation Merge
说明:使用
-Operation Replace会覆盖所有现有标签;Merge则保留原有标签并添加新标签。
无效操作原因说明
Kind属性是Azure SQL Database的只读系统属性,无法通过Set-AzResource直接修改。计算模型(ComputeModel)属于数据库的运行时配置,必须通过Set-AzSqlDatabase这类专用cmdlet进行调整。
内容的提问来源于stack exchange,提问作者andyz
相关产品推荐
相关产品推荐

