如何使用azure资源管理器模板部署具有地理复制的sql数据库

时间:2016-10-04 20:32:32

标签: database azure azure-resource-manager

我正在尝试创建一个ARM模板,该模板将使用活动的地理复制辅助数据库部署主数据库,这两个dbs现在都是基本层。我使用" createMode":" OnlineSecondary"创建辅助数据库。和" sourceDatabaseId"作为已创建的主要数据库,但我收到错误"此功能不适用于所选数据库的版本(基本版)。"我认为截至2016年4月,所有数据库层都可以使用活动地理复制吗?我是否无法使用ARM模板进行设置?

我的模板的相关部分是:

{
                "name": "[variables('sqlDatabaseName')]",
                "type": "databases",

                "location": "East US",
                "apiVersion": "2014-04-01-preview",
                "dependsOn": [
                    "[concat('Microsoft.Sql/servers/', ,variables('sqlServerName'), '-east')]"
                ],
                "tags": {
                    "displayName": "SqlDatabase"
                },
                "properties": {
                    "createMode": "OnlineSecondary",
                    "sourceDatabaseId": "[resourceId('Microsoft.Sql/servers/databases', concat(variables('sqlServerName'), '-west'), variables('sqlDatabaseName'))]",
                    "collation": "[parameters('deployinfo_sqlDatabaseCollation')]",
                    "edition": "[parameters('deployinfo_sqlDatabaseEdition')]",
                    "maxSizeBytes": "1073741824",
                    "requestedServiceObjectiveName": "[parameters('deployinfo_sqlDatabaseRequestedServiceObjectiveName')]"
                }
            }

更新 - 添加主数据库资源json

这是主数据库的资源块:

{
                "name": "[variables('sqlDatabaseName')]",
                "type": "databases",
                "location": "West US",
                "apiVersion": "2014-04-01-preview",
                "dependsOn": [
                    "[concat('Microsoft.Sql/servers/', variables('sqlServerName'), '-west')]"
                ],
                "tags": {
                    "displayName": "SqlDatabase"
                },
                "properties": {
                    "collation": "[parameters('deployinfo_sqlDatabaseCollation')]",
                    "edition": "[parameters('deployinfo_sqlDatabaseEdition')]",
                    "maxSizeBytes": "1073741824",
                    "requestedServiceObjectiveName": "[parameters('deployinfo_sqlDatabaseRequestedServiceObjectiveName')]"
                }
            }

2 个答案:

答案 0 :(得分:1)

是。也可以为Basic层配置Geo-Replication,是的,您可以使用ARM模板进行配置。我目前正在做同样的事情并且可以成功地做到这一点。我的地理复制数据库模板在第一次尝试时看起来像这样:

{
"type": "databases",
"name": "SecondaryDB",
"apiVersion": "2014-04-01-preview",
"location": "West US",
"tags": {
    "displayName": "SqlDatabase"
},
"properties": {
    "createMode": "OnlineSecondary",
    "sourceDatabaseId": "[resourceId('Microsoft.Sql/servers/databases', 'primaryserver01', 'PrimaryDB')]",
    "collation": "SQL_Latin1_General_CP1_CI_AS",
    "edition": "Basic",
    "maxSizeBytes": "1073741824",
    "requestedServiceObjectiveName": "Basic"
  },
 "dependsOn": ["[concat('Microsoft.Sql/servers/', 'secondaryserver01')]"]} 

我最好的猜测是问题在于传递给模板的参数,特别是传递给" edition"和" requestedServiceObjectiveName"。

答案 1 :(得分:0)

找到答案。事实证明,如果你没有指定你需要的sql server版本,它会转动一个不支持主动地理复制的旧版本。我需要将sql服务器声明为版本12.0以使复制工作。