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

How to deploy a sql database with geo replication using azure resource manager templates

我正在尝试创建一个 ARM 模板,该模板将部署一个主数据库和一个活动的异地复制辅助数据库,这两个数据库目前都属于基本层。我正在使用 "createMode": "OnlineSecondary" 创建辅助数据库并且 "sourceDatabaseId" 是已经创建的主数据库,但是我收到错误 "This feature is not available for the selected database's edition (Basic)." 我认为从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')]"
                }
            }

是的。 Geo-Replication 也可以为 Basic 层配置,是的,您将能够使用 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" 的参数。

找到答案了。事实证明,如果您没有指定所需的 sql 服务器版本,它会启动一个不支持活动地理复制的旧版本。我需要将 sql 服务器声明为版本 12.0 才能使复制工作。