Azure资源图形资源管理器查询“将”microsoft.compute/sqlvirtualmachine“与”microsoft.compute/disks“联接时出错

px9o7tmv  于 2023-03-19  发布在  Mac
关注(0)|答案(1)|浏览(110)

我是新的KQL上的Azure资源图资源管理器的KQL查询,我有一个要求,以获得与关联磁盘的SQLVM。我写了这个查询,并得到下面的错误。
任何帮助都将不胜感激。

查询:

资源|其中类型==“Microsoft. sql虚拟机/sql虚拟机”|项目ID,vmid=属性.虚拟机资源ID,名称,img=属性.sqlImageOffer,sqlImgOffered=属性.sqlImageSku,sqlLicense=属性.sqlServerLicenseType|加入(资源|其中类型==“微软计算机/磁盘”|项目管理者,磁盘大小GB =属性。磁盘大小GB,层=属性。层,磁盘IOPSRW =属性。磁盘IOPSReadWrite,磁盘MBpsReadWrite =属性。磁盘MBpsReadWrite,磁盘状态=属性。磁盘状态)位于$left.vmid == $right.管理者

输出:

详情:
查询无效。请参阅Azure资源图服务的文档并修复错误,然后重试。(代码:InvalidQuery)联接键“vmid”属于“dynamic”类型。请在联接分支中使用扩展运算符进行显式强制转换(例如...“”|扩展vmid =到字符串(vmid)|加入(...|extend vmid = tostring(vmid))on vmid“),因为不支持”dynamic“类型上的联接。(代码:默认)
请帮助解决此错误。

0md85ypi

0md85ypi1#

发布的有问题查询的 * 属性存在问题。virtualMachineResourceId* 因为 * 属性 * 包含Json数据。从 * 属性**属性获取 virtualMachineResourceId 时。virtualMachineResourceId* 的计算结果为对象。
我已经使用tostring()将返回值转换为字符串,它对我很有效。

以下是修改后的查询:-

resources
| where type == "microsoft.sqlvirtualmachine/sqlvirtualmachines"
| project id,
//used tostring() to convert properties.virtualMachineResourceId value to string 
vmid=tostring(properties.virtualMachineResourceId), name,
 img=properties.sqlImageOffer,
 sqlImgOffered=properties.sqlImageSku,
 sqlLicense=properties.sqlServerLicenseType
| join (resources | where type == "microsoft.compute/disks"
| project managedBy,
diskSizeGB=properties.diskSizeGB,
tier=properties.tier,
diskIOPSRW=properties.diskIOPSReadWrite,diskMBpsReadWrite=properties.diskMBpsReadWrite,
diskState=properties.diskState) 
on $left.vmid == $right.managedBy

相关问题