如何使用 ARM 模板复制 Azure SQL 数据库

How to Copy Azure SQL Database using ARM Template

不确定 ARM 是否支持它。我只能找到 power-shell references.

您可以使用 sourceDatabaseId 属性 来引用另一个数据库。然后您可以根据要创建的数据库类型指定各种创建模式:

{ "properties": { "createMode": "OnlineSecondary", "sourceDatabaseId": "[resourceId('Microsoft.Sql/servers/databases', variables('sql01Name'), 'databasename')]" } }

http://msdn.microsoft.com/en-us/library/azure/mt163685.aspx

您目前无法使用 ARM 模板部署 dacpac。上面的 link 使用 PowerShell 而不是 ARM。您可以使用 ARM 模板从源数据库创建数据库作为副本。

为任何 Azure 操作查找示例模板的一种简单方法是在门户中执行操作 - 在这种情况下,复制数据库 - 然后在门户中打开相应的资源组边栏选项卡,列出部署,找到刚刚提交的部署并打开它。然后从菜单栏中选择 select ViewTemplate 并检查 Template 选项卡和 Parameters 选项卡。这些向您展示了完整的模板和实际使用的参数值。然后,您可以下载模板以及随附的 Powershell 脚本。

对于数据库复制,这里是模板:

{
  "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "databaseName": {
      "type": "string"
    },
    "serverName": {
      "type": "string"
    },
    "location": {
      "type": "string"
    },
    "createMode": {
      "type": "string"
    },
    "sourceDatabaseId": {
      "type": "string"
    },
    "requestedServiceObjectiveName": {
      "type": "string"
    }
  },
  "resources": [
    {
      "apiVersion": "2014-04-01-preview",
      "location": "[parameters('location')]",
      "name": "[concat(parameters('serverName'), '/', parameters('databaseName'))]",
      "properties": {
        "createMode": "[parameters('createMode')]",
        "sourceDatabaseId": "[parameters('sourceDatabaseId')]",
        "requestedServiceObjectiveName": "[parameters('requestedServiceObjectiveName')]"
      },
      "type": "Microsoft.Sql/servers/databases"
    }
  ]
}  

对于数据库复制createMode = 'Copy'

并确保提供格式如下的完全限定的 resourceId:

"/subscriptions/<sub-id>/resourceGroups/<resourceGroupName>/providers/Microsoft.Sql/Servers/<server-name>/databases/<database-name>"

确保资源组名称大小写正确并且服务器名称全部小写。