【问题标题】:How to deploy a sql database with geo replication using azure resource manager templates如何使用 azure 资源管理器模板部署具有异地复制的 sql 数据库
【发布时间】:2016-10-04 20:32:32
【问题描述】:

我正在尝试创建一个 ARM 模板,该模板将部署一个主数据库和一个活动的异地复制辅助数据库,两个数据库现在都属于基本层。我正在使用“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')]"
                }
            }

【问题讨论】:

    标签: database azure azure-resource-manager


    【解决方案1】:

    是的。地理复制也可以配置为基本层,是的,您将能够使用 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”的参数。

    【讨论】:

    • 感谢您的回复,很高兴知道其他人已配置此功能。我将“Basic”传递给“edition”和“requestedServiceObjectiveName”。
    • 除此之外几乎一切看起来都一样。您能否也发布用于创建主数据库的模板。它可能有助于调试问题。
    • 我继续添加了主数据库部分。我不得不重新创建它,因为我已经从我的模板中提取了地理复制部分,但它基本上是我以前所拥有的。两个 DB 都被传递了相同的 edition 和 requestedServiceObjectiveName 参数。此过程是否有不同的部分(可能在 powershell 脚本中)确定 api 的版本?
    • 无论我做什么,我都无法复制这个问题。使用异地复制正确创建了数据库。您是否查看过模板的其他部分引起此问题的可能性?我建议从您的模板中删除所有其他内容并尝试仅部署辅助数据库。
    • 感谢 Flemin 的帮助,我发现我们实际上有一些付费的 MSFT 支持,我们可以利用它来解决这个问题,我会用结果更新这个,希望能阐明我在做什么错了。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2017-10-08
      • 1970-01-01
      • 1970-01-01
      • 2020-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多