无法使用 PowerShell 在 Azure SQL 数据库上设置标记

Can't set a tag on an Azure SQL Database using PowerShell

您可以使用 Set-AzureResource 在网站等 Azure 资源上设置标签:

Set-AzureResource -Name [site name] -ResourceGroupName [resource group name] -ResourceType Microsoft.Web/sites -ApiVersion 2014-04-01 -Tags @{ Name = [my tag name]; Value = [my tag value] }

但无论我尝试什么,我都无法在 Azure SQL 数据库上运行它。事实上,我什至无法 select 资源 - 这就是我正在尝试的:

Get-AzureResource -Name TroyPSTestDB -ResourceGroupName Default-SQL-WestUS -ResourceType Microsoft.Sql/servers -ApiVersion 2014-04-01

我总是 "Provided resource does not exist"。但是,当我 select 所有数据库时我可以看到资源:

Get-AzureResource -ResourceGroupName Default-SQL-WestUS -ResourceType Microsoft.Sql/servers/databases

这给了我:

Name              : TroyPSTestDB
ResourceGroupName : Default-SQL-WestUS
ResourceType      : Microsoft.Sql/servers/databases
ParentResource    : servers/snyb5o1pxk
Location          : westus
Permissions       :
                    Actions  NotActions
                    =======  ==========
                    *

ResourceId        : /subscriptions/62e2a1e5-4eda-4c1e-805e-44a6c8f8afbd/resourceGroups/Default-SQL-WestUS/providers/Microsoft.Sql/servers/snyb5o1pxk/databases/TroyPSTestDB

那么是什么原因呢? PS 命令有问题吗?或者你能不能这样 select 一个数据库?有没有其他方法可以在上面贴上标签?谢谢!

更新:与其说是一个错误,不如说是对提供的参数的误解:

Get-AzureResource -Name {dbname} -ParentResource servers/{servername} -ResourceType Microsoft.Sql/servers/databases -ResourceGroupName {resource-group-name} -ApiVersion 2014-04-01

关键是在 -ParentResource 参数中包含“servers/”。

因此,要设置标签,您需要确保正确设置 -ParentResource - 您的其余参数都是正确的。

===

您可以通过新门户添加标签。管理这个的 Powershell 东西看起来有一个错误。

在门户中:/subscriptions/GUID/resourceGroups/Default-SQL-WestUS/providers/Microsoft.Sql/servers/{servername}/databases/{database}?api-version=2014-04-01

在PS中:/subscriptions/GUID/resourcegroups/Default-SQL-WestUS/providers/Microsoft.Sql/{servername}/databases/{database}?api-version=2014-04-01

(注意 PS 命令中缺少服务器节点)。

提出的问题:https://github.com/Azure/azure-powershell/issues/73

使用 AzureRM.Resources 3.0.1,您可以使用以下语法在 Sql 数据库上设置标签:

Set-AzureRmResource -ResourceType 'Microsoft.Sql/servers/databases' -ResourceName "$sqlServerName/$sqlDatabaseName" -ResourceGroupName $ressourceGroupName -Tag @{ env = "dev" }

实际上,Get-AzureRmResource 返回的 Sql 数据库资源的名称已经具有 server/database.

格式