如何使用C#查询Microsoft Dynamics 365中GUID对应的实体名称
GUID归属实体查询方法
以下是不同场景下的查询操作步骤:
Windows系统本地/域环境查询
- 打开PowerShell,执行对应命令检索:
如果你要查询的是AD域内的对象,直接运行:
返回结果里的Get-ADObject -Filter {ObjectGUID -eq "7487cd8b-a0a2-eb11-b81e-005056a460ec"} | Select-Object Name, ObjectClassObjectClass就是实体类型,Name就是实体名称。 - 如果是本地WMI对象,可以遍历常见对象类匹配GUID,示例命令:
Get-WmiObject -List | ForEach-Object { Get-WmiObject -Class $_.Name -Filter "GUID='7487cd8b-a0a2-eb11-b81e-005056a460ec'" -ErrorAction SilentlyContinue } | Select-Object __CLASS, Name
Dynamics 365/Dataverse环境查询
- 进入环境的高级查找界面,构造Web API查询路径即可查询,路径格式为
[你的环境地址]/api/data/v9.2/$metadata#$filter=Microsoft.Dynamics.CRM.MetadataEntityId eq (guid'7487cd8b-a0a2-eb11-b81e-005056a460ec'),返回结果里的LogicalName和DisplayName就是对应实体的信息。 - 也可以用XrmToolBox的元数据搜索工具,直接输入GUID检索对应实体。
通用数据库存储场景查询
如果该GUID存储在业务数据库中,你可以通过遍历所有表的GUID类型字段匹配查询,SQL Server示例脚本:
DECLARE @TargetGUID UNIQUEIDENTIFIER = '7487cd8b-a0a2-eb11-b81e-005056a460ec' DECLARE @TableName NVARCHAR(128), @ColumnName NVARCHAR(128), @Sql NVARCHAR(MAX) DECLARE GuidCursor CURSOR FOR SELECT t.name, c.name FROM sys.tables t JOIN sys.columns c ON t.object_id = c.object_id WHERE c.system_type_id = 36 -- uniqueidentifier类型字段ID OPEN GuidCursor FETCH NEXT FROM GuidCursor INTO @TableName, @ColumnName WHILE @@FETCH_STATUS = 0 BEGIN SET @Sql = 'IF EXISTS (SELECT 1 FROM ' + QUOTENAME(@TableName) + ' WHERE ' + QUOTENAME(@ColumnName) + ' = @TargetGUID) PRINT ''匹配到表:' + @TableName + ',字段:' + @ColumnName + '''' EXEC sp_executesql @Sql, N'@TargetGUID UNIQUEIDENTIFIER', @TargetGUID FETCH NEXT FROM GuidCursor INTO @TableName, @ColumnName END CLOSE GuidCursor DEALLOCATE GuidCursor
注意:该脚本会遍历全库所有GUID字段,大库环境建议在业务低峰期运行,避免影响性能。
内容的提问来源于stack exchange,提问作者Davood Ramezani
相关产品推荐
相关产品推荐

