当前位置: 首页 > 知识库问答 >
问题:

Azure资源管理器模板语言-resourceId():无法计算模板语言函数“Resource id”

壤驷棋
2023-03-14

语境

///  - Azure
///  - Azure Resource Management
///      https://msdn.microsoft.com/en-us/library/azure/dn578292.aspx
///
///  - Azure Resource Manager Template Language
///      https://msdn.microsoft.com/en-us/library/azure/dn835138.aspx
///
///  - Azure Resource Manager Template Language functions and expressions
///  - Azure Resource Manager Template Language function:
///      resourceId('resourceNamespace/resourceType','resourceName')
///
///  - Powershell
///  - Azure PowerShell
///  - Azure PowerShell Resource Manager Mode (Switch-AzureMode AzureResourceManager)
///  - Azure PowerShell CmdLet: New-AzureResourceGroup
///
    PS c:\AzureDeployment> New-AzureResourceGroup -Location "North Europe" -Name "psResourceGroup" -DeploymentName "psDeployment" -TemplateFile .\Template.json -TemplateParameterFile .\Parameters.json -Verbose
    cmdlet New-AzureResourceGroup at command pipeline position 1
    Supply values for the following parameters:
    (Type !? for Help.)
    VERBOSE: Performing the operation "Replacing resource group ..." on target "psDeployment".
    VERBOSE: 16:22:07 - Created resource group 'psResourceGroup' in location 'northeurope'
    New-AzureResourceGroup : 16:22:08 - Resource Microsoft.Sql/servers/databases 
    'xxx-sql-server-name-xxx/psDatabaseName' failed with message 
    'Unable to process template language expressions for resource
    '/subscriptions/xxxxxxxx/resourceGroups/psResourceGroup/providers/Microsoft.Sql/servers/xxx-sql-server-name-xxx/databases/psDatabaseName'
    at line _ and column _. 
    'Unable to evaluate template language function 'resource Id': the type 'Microsoft.Sql/servers/databases' requires '2' resource name argument(s).''
    At line:1 char:1
    + New-AzureResourceGroup -Location "North Europe" -Name "psResourceGroup" -Templat ... 
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo : NotSpecified: (:) [ New-AzureResourceGroup ], Exception 
        + FullyQualifiedErrorId : Microsoft.Azure.Commands.Resources.NewAzureResourceGroupCommand

另外,如果我从模板中删除createMode和sourceDatabaseId,一切都很好。

这就是上面使用的模板

{    
    "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json",
    "contentVersion": "1.0.0.0",

    "parameters": {
        "location": {
            "type": "string",
            "defaultValue": "North Europe",
            "allowedValues": [
                "East Asia",
                "South East Asia",
                "East US",
                "West US",
                "North Central US",
                "South Central US",
                "Central US",
                "North Europe",
                "West Europe"
            ]
        },
        "sqlServerName": { "type": "string" },
        "sqlAdminUserName": { "type": "string" },
        "sqlAdminUserPassword": { "type": "securestring" },
        "databaseName": { "type": "string" }
    },

    "resources": [
        {
            "type": "Microsoft.Sql/servers",
            "apiVersion": "2.0",
            "location": "[parameters('location')]",
            "name": "[parameters('sqlServerName')]",
            "properties": { "administratorLogin": "[parameters('sqlAdminUserName')]", "administratorLoginPassword": "[parameters('sqlAdminUserPassword')]" },
            "resources": [
                {
                    "type": "databases",
                    "apiVersion": "2.0",
                    "location": "[parameters('location')]",
                    "name": "[parameters('databaseName')]",
                    "dependsOn": [ "[concat('Microsoft.Sql/servers/', parameters('sqlServerName'))]" ],
                    "properties": {
                        "edition": "Standard",
                        "collation": "SQL_Latin1_General_CP1_CI_AS",
                        "maxSizeBytes": "10737418240",
                        "requestedServiceObjectiveId": "f1173c43-91bd-4aaa-973c-54e79e15235b",
                        "createMode": "Copy",

====>                   "sourceDatabaseId": "[resourceId('Microsoft.Sql/servers/databases', 'TestDB')]"

                    }
                }
            ]
        }
    ]
}

共有1个答案

韩瀚
2023-03-14

我在一篇完全无关的文章中偶然发现了这个解决方案,但你应该通过

[resourceID('microsoft.sql/servers/database',parameters('sql servername'),'testdb')]

 类似资料:
  • Section Contents 内建函数参考 字母顺序索引 字符串内建函数 数字内建函数 日期内建函数 布尔值内建函数 序列内建函数 哈希表内建函数 结点(对于XML)内建函数 循环变量内建函数 独立类型内建函数 很少使用的和专家级的内建函数 指令参考 Alphabetical index assign attempt, recover compress escape, noescape flu

  • 接下来,我们会详细描述 Django 内置模板语言的语法 (DTL),和 Mako、Jinja2 一样,需要掌握其注释、变量、过滤器、标签、控制语句等等的写法,并用实际的案例进行说明。 1. DTL 基础用法 1.1 变量 DTL 中变量的写法为 {{ variable }}, 这和 Jinja2 非常类似。模版引擎碰到模板变量时,会从上下文 context 中获取这个变量的值,然后用该值替换掉它

  • ThinkCMF前台模板多语言是使用多模板的方式来实现的,如:当前模板是simplebootx,如果想开启英文前台模板的话,就只要加一个模板名为 simplebootx_en-us模板就可以了; 前台模板多语言实现原理: ThinkCMF在前台控制器加载模板文件时,会根据当前用户的浏览器语言或者用户指定的语言来加载模板文件,如果是中文用户就加载 simplebootx 里的模板文件,如果是英文用户

  • 我正在处理ARM模板并需要执行条件部署。例如,我在变量“子网”中定义了两个网络安全组。 网络安全组nsg_bastion1需要使用预设规则进行特殊处理,因为它是Azure Bastion子网的网络安全组。nsg_client1将分配一些自定义规则,此时这些规则并不重要。 为了区分非堡垒和堡垒网络安全组,我创建了两个条件资源块: 条件属性检查子网是否称为“AzureBastionSubnet”。我已

  • 本文向大家介绍C语言数组栈实现模板,包括了C语言数组栈实现模板的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了C语言数组栈实现模板的具体代码,供大家参考,具体内容如下 SeqStack.h SeqStack.cpp 函数实现 数组栈测试程序 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • Mpx中的模板语法以小程序模板语法为基础,支持小程序的全部模板语法,同时提供了一系列增强的模板指令及语法。 小程序原生模板语法请参考这里 Mpx提供的增强指令语法如下: wx:style动态样式 wx:class动态类名 wx:model双向绑定 wx:model-prop双向绑定属性 wx:model-event双向绑定事件 wx:model-value-path双向绑定数据路径 wx:mode