问题描述
从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的位置。