We are using Azure Resource Manager templates (ARM templates) deployment scripts and would like to set different retention policies if we are in production or test.
Using export template for our current Dev SQL server gives these values:
If these values are copied to our deployment script as is:
{
"type": "Microsoft.Sql/servers/databases/backupLongTermRetentionPolicies",
"apiVersion": "2017-03-01-preview",
"name": "[concat(parameters('servers_prod_repository_name'), '/', parameters('servers_prod_repository_name'), '/default')]",
"dependsOn": [
"[resourceId('Microsoft.Sql/servers/databases', parameters('servers_prod_repository_name'), parameters('servers_prod_repository_name'))]",
"[resourceId('Microsoft.Sql/servers', parameters('servers_prod_repository_name'))]"
],
"properties": {
"weeklyRetention": "PT0S",
"monthlyRetention": "PT0S",
"yearlyRetention": "PT0S",
"weekOfYear": 0
}
},
I get the following error:
Resource Microsoft.Sql/servers/databases/backupLongTermRetentionPolicies 'our-sql-server/our-sql-server/default' failed with message '{ 11:14:50 - "error": { 11:14:50 - "code": "LongTermRetentionMissingWeekOfYear", 11:14:50 - "message": "WeekOfYear is required to be set between 1 and 52 in order to set yearly retention." 11:14:50 - } 11:14:50 - }'
The error "WeekOfYear is required to be set between 1 and 52 in order to set yearly retention."
is in the expected responses but given that the value is there as standard it seems like a bug with yearlyRetention
set to PT0S
.
Solved by removing monthlyRetention
, yearlyRetention
and weekOfYear
parameters.
Parameters:
"weeklyRetention": {
"value": "P4W"
},
deployscript:
{
"type": "Microsoft.Sql/servers/databases/backupLongTermRetentionPolicies",
"apiVersion": "2017-03-01-preview",
"name": "[concat(parameters('servers_prod_repository_name'), '/', parameters('servers_prod_repository_name'), '/default')]",
"dependsOn": [
"[resourceId('Microsoft.Sql/servers/databases', parameters('servers_prod_repository_name'), parameters('servers_prod_repository_name'))]",
"[resourceId('Microsoft.Sql/servers', parameters('servers_prod_repository_name'))]"
],
"properties": {
"weeklyRetention": "[parameters('weeklyRetention')]"
}
},