如何在现有SQL Managed Instance中使用ARM模板创建SQL数据库
基于已有SQL Managed Instance单独创建数据库的ARM实现方案
核心实现逻辑
无需在模板中定义父级SQL托管实例资源,仅需通过子资源的name字段关联已有托管实例即可:
子资源name字段格式为:
{已有托管实例名称}/{新建数据库名称},通过斜杠分隔完成父资源关联
最小可用模板示例
以下为新建空白数据库的完整ARM模板,可直接调整参数使用:
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "existingManagedInstanceName": { "type": "string", "metadata": { "description": "已存在的SQL托管实例名称" } }, "newDatabaseName": { "type": "string", "metadata": { "description": "要创建的新数据库名称" } }, "location": { "type": "string", "defaultValue": "[resourceGroup().location]", "metadata": { "description": "数据库位置,需和托管实例位置一致" } }, "collation": { "type": "string", "defaultValue": "SQL_Latin1_General_CP1_CI_AS", "metadata": { "description": "数据库排序规则" } } }, "resources": [ { "type": "Microsoft.Sql/managedInstances/databases", "apiVersion": "2021-02-01-preview", "name": "[concat(parameters('existingManagedInstanceName'), '/', parameters('newDatabaseName'))]", "location": "[parameters('location')]", "properties": { "collation": "[parameters('collation')]", "createMode": "Default" } } ] }
不同创建场景的属性配置说明
- 新建空白数据库:保持
createMode为Default,仅需配置collation参数即可 - 按时间点从现有托管实例数据库恢复:设置
createMode为PointInTimeRestore,补充配置restorePointInTime(ISO格式时间戳)、sourceDatabaseId(源数据库资源ID) - 从已删除的数据库恢复:设置
createMode为Recovery,补充配置restorableDroppedDatabaseId(可恢复的已删库资源ID) - 从外部存储备份文件恢复:设置
createMode为RestoreExternalBackup,补充配置storageContainerUri、storageContainerSasToken、lastBackupName参数
部署要求
- 模板部署的资源组需与已有SQL托管实例所在资源组一致
- 执行部署操作的账号需持有目标SQL托管实例的SQL DB Contributor及以上权限
内容的提问来源于stack exchange,提问作者hanu
相关产品推荐
相关产品推荐

