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

时间:2016-12-21 09:34:16

标签: azure azure-resource-manager azure-sql-database

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

2 个答案:

答案 0 :(得分:2)

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

查找任何Azure操作的示例模板的一种简单方法是在门户中执行操作 - 在这种情况下,复制数据库 - 然后在门户中打开相应的资源组刀片,列出部署,找到部署刚刚提交并打开它。然后从菜单栏中选择ViewTemplate并检查“模板”选项卡和“参数”选项卡。这些显示完整模板和实际使用的参数值。然后,您可以下载该模板,并附带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>"

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

答案 1 :(得分:1)

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

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

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