Устранение ошибок, связанных с родительскими ресурсамиResolve errors for parent resources

В этой статье приведены ошибки, которые могут возникнуть при развертывании ресурсов, зависящих от родительского ресурса.This article describes the errors you may get when deploying a resource that is dependent on a parent resource.

СимптомSymptom

При развертывании ресурса, являющегося дочерним для другого ресурса, может появиться следующая ошибка:When deploying a resource that is a child to another resource, you may receive the following error:

Code=ParentResourceNotFound;
Message=Can not perform requested operation on nested resource. Parent resource 'exampleserver' not found."

Причина:Cause

Если один ресурс является дочерним для другого ресурса, перед созданием дочернего ресурса должен существовать его родительский ресурс.When one resource is a child to another resource, the parent resource must exist before creating the child resource. Имя дочернего ресурса определяет соединение с родительским ресурсом.The name of the child resource defines the connection with the parent resource. Формат имени дочернего ресурса: <parent-resource-name>/<child-resource-name>The name of the child resource is in the format <parent-resource-name>/<child-resource-name>. Например, база данных SQL может быть определена следующим образом.For example, a SQL Database might be defined as:

{
  "type": "Microsoft.Sql/servers/databases",
  "name": "[concat(variables('databaseServerName'), '/', parameters('databaseName'))]",
  ...

Если вы развертываете сервер и базу данных в одном шаблоне, но не определяете зависимость от сервера, база данных может быть развернута раньше сервера.If you deploy both the server and the database in the same template, but don't specify a dependency on the server, the database deployment might start before the server has deployed.

Если родительский ресурс уже существует и не развертывается в том же шаблоне, вы получаете эту ошибку, если Resource Manager не может связать дочерний ресурс с родительским.If the parent resource already exists and isn't deployed in the same template, you get this error when Resource Manager can't associate the child resource with parent. Эта ошибка может возникнуть, если дочерний ресурс имеет неправильный формат или дочерний ресурс развернут в группе ресурсов, которая отличается от группы родительского ресурса.This error might happen when the child resource isn't in the correct format, or the child resource is deployed to a resource group that is different than the resource group for parent resource.

РешениеSolution

Чтобы устранить эту ошибку при развертывании родительских и дочерних ресурсов в одном шаблоне, укажите зависимость.To resolve this error when parent and child resources are deployed in the same template, include a dependency.

"dependsOn": [
    "[variables('databaseServerName')]"
]

Чтобы устранить эту ошибку в случае, когда родительский ресурс был ранее развернут в другом шаблоне, не устанавливайте зависимость.To resolve this error when the parent resource was previously deployed in a different template, you don't set a dependency. Вместо этого разверните дочерний ресурс в ту же группу ресурсов и укажите имя родительского ресурса.Instead, deploy the child to the same resource group and provide the name of the parent resource.

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "sqlServerName": {
            "type": "string"
        },
        "databaseName": {
            "type": "string"
        }
    },
    "resources": [
        {
            "apiVersion": "2014-04-01",
            "type": "Microsoft.Sql/servers/databases",
            "location": "[resourceGroup().location]",
            "name": "[concat(parameters('sqlServerName'), '/', parameters('databaseName'))]",
            "properties": {
                "collation": "SQL_Latin1_General_CP1_CI_AS",
                "edition": "Basic"
            }
        }
    ],
    "outputs": {}
}

Дополнительные сведения см. в статье Определение порядка развертывания ресурсов в шаблонах Azure Resource Manager.For more information, see Define the order for deploying resources in Azure Resource Manager templates.