Azure 向ARM模板故障切换组提供数据库的动态列表

Azure 向ARM模板故障切换组提供数据库的动态列表,azure,azure-resource-manager,arm-template,Azure,Azure Resource Manager,Arm Template,我正在尝试通过ARM模板为SQL Server创建故障切换组。在理想情况下,我希望能够将一个数据库名称数组传递到模板中,并使用它生成一个数据库资源数组,但是我还没有做到这一点。下一次尝试是将弹性池中的所有数据库添加到FOG中,但同样,我找不到通过ARM模板拉取池中数据库的方法。 下面是我当前使用“硬编码”数据库名称的示例 { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTempl

我正在尝试通过ARM模板为SQL Server创建故障切换组。在理想情况下,我希望能够将一个数据库名称数组传递到模板中,并使用它生成一个数据库资源数组,但是我还没有做到这一点。下一次尝试是将弹性池中的所有数据库添加到FOG中,但同样,我找不到通过ARM模板拉取池中数据库的方法。 下面是我当前使用“硬编码”数据库名称的示例

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "origin_sql_server_name": {
            "type": "string"
        },
        "web-database-name": {
            "type": "string"
        },
        "core-database-name": {
            "type": "string"
        },
        "failover-database-server-name": {
            "type": "string"
        },
        "dr-resource-group-name": {
            "type": "string"
        }
    },
    "variables": {
        "fog-name": "[concat(parameters('origin_sql_server_name'),'/', parameters('origin_sql_server_name'),'-fog')]"
    },
    "resources": [
        {
            "type": "Microsoft.Sql/servers/failoverGroups",
            "apiVersion": "2015-05-01-preview",
            "name": "[variables('fog-name')]",
            "properties": {
                "readWriteEndpoint": {
                    "failoverPolicy": "Automatic",
                    "failoverWithDataLossGracePeriodMinutes": 60
                },
                "readOnlyEndpoint": {
                    "failoverPolicy": "Disabled"
                },
                "partnerServers": [
                    {
                        "id": "[resourceId(parameters('dr-resource-group-name'),'Microsoft.Sql/servers', parameters('failover-database-server-name'))]"
                    }
                ],
                "databases": [
                    "[resourceId('Microsoft.Sql/servers/databases', parameters('origin_sql_server_name'), parameters('web-database-name'))]",
                    "[resourceId('Microsoft.Sql/servers/databases', parameters('origin_sql_server_name'), parameters('core-database-name'))]"
                ]
            }
        }
    ],
    "outputs":{
        "fogName": {
            "type": "string",
            "value": "[concat(parameters('origin_sql_server_name'),'-fog')]"
        }
    },
    "functions": [
    ]
}
这种方法的目的是拥有一个单一的模板,可以跨几个具有相似但略有不同的数据库需求的不同站点使用。如果这是不可能的,那么我可以有单独的模板,但出于可维护性的目的,我会尽量避免这样做
谢谢

您可以对failoverGroup的数据库属性使用数组复制-将数据库属性替换为:

    "copy": [
        {
            "name": "databases",
            "count": "[length(parameters('failOverDbs'))]",
            "input": "['Microsoft.Sql/servers/databases', parameters('origin_sql_server_name'), parameters('failOVerDbs')[copyIndex('databases')])]"
        }
    ]

然后对db列表使用数组参数。有帮助吗?

这很理想,谢谢!我看过复制函数,但只能在一个地方找到“输入”参数的一些示例,这与我的情况无关-你知道我有任何关于输入参数的官方文档吗?嗯。。。文档在这里:-虽然我认为它没有提到数组,但会得到更新。