Azure ARM模板-SQL故障转移组错误FailoverGroupCreateOrUpdateRequestReadOnlyPropertyModified

问题描述

从ARM模板成功部署了具有预期故障转移组的主要和辅助Azure sql服务器。在后续部署中部署ARM模板将返回以下错误消息:

  "error": {
    "code": "FailoverGroupCreateOrUpdateRequestReadOnlyPropertyModified","message": "The create or update failover group request body should not modify the read-only property 'location'."
  }
} undefined

我们没有按照错误消息中的指示对主服务器或辅助服务器的location属性进行任何更改。

ARM模板中的代码段:

    {
      "comments": "Azure sql Server Failover Group","condition": "[parameters('isProduction')]","type": "Microsoft.sql/servers/failoverGroups","apiVersion": "2015-05-01-preview","name": "[concat(variables('sqlServerPrimaryName'),'/',variables('sqlServerFailoverName'))]","location": "[parameters('sqlServerPrimaryLocation')]","dependsOn": [
        "[resourceId('Microsoft.sql/servers',variables('sqlServerPrimaryName'))]","[resourceId('Microsoft.sql/servers',variables('sqlServerSecondaryName'))]","[resourceId('Microsoft.sql/servers/databases',variables('sqlServerPrimaryName'),variables('admindbname'))]",variables('trxndbname'))]",variables('dbadbname'))]"
      ],"properties": {
        "readWriteEndpoint": {
          "failoverPolicy": "Automatic","failoverWithDataLossGracePeriodMinutes": 60
        },"readOnlyEndpoint": {
          "failoverPolicy": "disabled"
        },"partnerServers": [
          {
            "id": "[resourceId('Microsoft.sql/servers',variables('sqlServerSecondaryName'))]"
          }
        ],"databases": [
          "[resourceId('Microsoft.sql/servers/databases',variables('dbadbname'))]"
        ]
      }
    }

解决方法

正如@Leon Yue的评论所说:

部署臂模板后,将创建故障转移组并 存在。如错误所述,位置是只读的。当我们部署它 两次,即使您没有设置位置值,它也会更新 它,然后导致错误。

第二次部署时,您无法更新location属性,而您需要移动此属性。

,

如果可能的话,从ARM模板中删除该位置,因为已经在故障转移组创建名称中指定了sqlServerPrimaryName,所以它将采用sqlServerPrimaryName的位置。