虚拟表的已知限制和故障排除
本文介绍在 Microsoft Dataverse 中使用虚拟表时的已知限制和故障排除技巧。
以下是使用虚拟连接器提供程序创建的虚拟表的已知限制列表。
一般限制
- 使用的表或列表必须至少包含一个用作主要字段的字符串字段和一个 GUID 字段。 如果没有这些字符串字段,则无法创建虚拟表,并且在表详细信息检索阶段会生成错误。
- SharePoint 使用所有列表中存在的隐藏数字 ID 字段
- SQL 可以使用 GUID 或整数字段
- Excel 必须具有 GUID 字段
- Dataverse 只能创建包含与 Dataverse 兼容的数据类型的列。 这包括以下数据类型:
- String
- 多行文本(备忘录)
- 整数
- 小数
- 流通股
- 日期/时间
- 是/否(布尔)
- 选择项(多值选择)
- 超链接/Url
- 虚拟表不支持的数据类型:
- 文件和附件
- 图像
- 虚拟表中文本列允许的最大字符长度为 4000 个字符。 如果源表的最大字符限制大于此值,则任何超过最大字符限制的创建或更新操作都会导致验证错误,并且操作将失败。
- 虚拟表查询只能返回 1,000 个记录。 如果与虚拟表具有 1:N 或 N 自定义多表(多态)关系,任何超过此限制的查询都将失败并提供一个错误。 解决此限制的方法是在您的查询中使用筛选来减少记录集。
- 审计功能不适用于虚拟表,因为 Dataverse 只能执行和存储本地存储数据的审计数据。
- 无法为虚拟表计算汇总和计算字段。 这是因为汇总是 Dataverse 中的服务器端计算,需要将数据存储在本地。
- Microsoft Entra Microsoft 提供的 ID 虚拟表仅允许读取访问。
- Dataverse 虚拟表可以显示超出 Dataverse 正常最大值的字段值。 此行为是因为呈现的值未在本地存储。 例如,Dataverse 整数最大值为 100,000,000,000,但它可以从 SharePoint 检索并显示 9,000,000,000,000。 但是,如果用户尝试将数字编辑为大于 Dataverse 中最大接受大小的大小,系统将提供一个错误,指示无法保存记录,因为记录超过最大大小。
- 虚拟表不支持表数据的导入和导出功能。
对于每个数据源限制
以下是每个数据源的限制。
- SQL 虚拟表可以使用 GUID 或 Integer 字段作为功能的主键。
- 没有主键的 SQL Server 表:可以选择任何非字符串字段作为主键。 虚拟表应已成功创建。
RetrieveMultiple
有效,其他操作将失败,并显示以下错误消息(来自 SQL 连接器):“APIM 请求未成功:BadRequest:表中不存在主键。对于功能,必须使用 GUID 或整数字段作为主键。 - 使用字符串主键的 SQL Server 表:SQL 字符串主键是虚拟表主键唯一可用的选项。 仅当值可以解析为 GUID 时,才支持 SQL Server 字符串主键。 如果值无法解析为 GUID,虚拟表创建将成功,但在运行时将失败并显示以下错误:
- Power Apps (make.powerapps.com):“我们无法打开您的桌子。 请尝试重新加载或重新打开。”
- 网络跟踪:“仅当可以将字符串主键解析为 GUID 时才支持字符串主键。”
- SQL Server 没有非主键字符串字段的表用作主名称:如果 SQL 表没有可用作主名称的字符串字段,我们会在配置步骤显示以下错误:“表没有主字段”
- SQL 视图可用于创建虚拟表,但只提供读取操作。
- 有关 SQL Server 连接器限制,请转到 SQL Server 连接器参考。
- SQL 源表中的数据类型 bigint 列在虚拟表中映射为 decimal 数据类型 Dataverse 。 当在 bigint 映射到整数流程中提供平台支持时,需要删除虚拟表中先前创建的列,并应创建新列。
- 目前,虚拟表中不能包含以下列类型:
- 时间
- Datetime2
- 图像
- 几何
- 地区
- RowVersion
- 以下列类型包含在虚拟表中,但仅显示为文本字段:
- HierarchyID
- XML
- Sqlvariant
故障排除
即使您的源表中有更多记录,虚拟表中也只有一 (1) 个记录。
解决方案: 检查您的源表并确保它定义了主键。当(make.powerapps.com)检索表列表或选择 Power Apps Finish 创建表时 ,您会收到以下错误之一:
- “找不到区段
msdyn_get_required_fields
的资源” - “调用...时出错,请验证环境中是否存在连接...”
- “序列与任何元素
msdyn_get_required_fields
匹配”
解决方案:在某些情况下,您可能没有虚拟连接器提供商的最新解决方案。 要确定虚拟连接器提供程序解决方案是否需要更新,请执行以下操作:
- 选择 左侧导航窗格中的 Solutions 。 如果项目不在侧面板窗格中,请选择 …更多,然后选择所需项目。
- 选择“历史记录 ”选项卡。
- 搜索
ConnectorProvider
。 - 查看信息,确认是否需要更新解决方案。
- 如果历史记录指示需要更新,请转到 Microsoft 商业市场 ,搜索 Virtual Connector Provider,然后选择 立即 获取“,将解决方案导入到环境。
- 再次按照以下步骤创建虚拟表。
- “找不到区段
检索连接列表时将显示一条消息“当前环境中未找到连接‘xyz’”。 检索连接列表时。
解决方案:当用户环境中存在大量连接时, Dataverse 会发生这种情况。 连接器提供程序解决方案的版本 1029 已修复此问题。 要确定虚拟连接器提供程序解决方案是否需要更新,请执行以下操作:- 选择 左侧导航窗格中的 Solutions 。 如果项目不在侧面板窗格中,请选择 …更多,然后选择所需项目。
- 选择“历史记录 ”选项卡。
- 搜索
ConnectorProvider
。 - 查看信息,确认是否需要更新解决方案。
- 如果历史记录指示需要更新,请转到 Microsoft 商业市场 ,搜索 Virtual Connector Provider,然后选择 立即 获取“,将解决方案导入到环境。
- 再次按照以下步骤创建虚拟表。
您会收到通知,指出在创建虚拟表期间发生了超时。
解决方案:当其他现有作业导致虚拟表创建延迟时,可能会发生这种情况。 请在等待几分钟后重试。您收到“发生意外错误”的通知
解决方案:当虚拟表数据源是使用无效值创建的时,会发生这种情况。 要解决此问题,您需要找到导致错误的虚拟表数据源,将其删除,然后重新创建虚拟表。- 从中选择 设置(齿轮图标) 高级设置 > 。 Power Apps
- 在顶部菜单中,选择 设置。
- 转到解决方案。 如果项目不在侧面板窗格中,请选择 …更多,然后选择所需项目。
- 转到包含虚拟表的解决方案(如果您没有使用解决方案,请转到 Common Data Services 默认解决方案)。
- 在左侧面板中,选择 虚拟表数据源。
- 双击每个数据源(它们都以
VCP_DS_..."
开头),找到出现错误的删除数据源时。 - 重新创建您的虚拟表。
此时将显示一条消息“此表已存在,您正在重新创建。 无法更改主字段和架构名称。”
解决方案:此表之前已创建。 继续创建将重新创建表,这会导致在数据源上所做的任何表更改都将在虚拟表中更新(这包括添加或删除字段)。 自定义名称和主字段值不可编辑。错误消息:“primary_key_name 不能为空”
解决方案:您选择的表或列表不包含主键的 GUID 值。 您需要在源表中添加额外的 GUID 列才能创建虚拟表。您创建了一个 Excel 虚拟表,但在的 Tables(表 )区域中 看不到它 Power Apps。
解决方案:由于虚拟表创建是异步的,因此您可以在 System Jobs(系统作业 )中检查流程的状态。 查找 Name 开头Microsoft.Wrm.DataProvider.Connector.Plugins.ConnectorGenerateVEPlugin
且 Regarding 列的值等于新虚拟表名称的系统作业。 如果状态仍 为 In Progress(正在进行),则只需等待作业完成。 如果出现错误,您可以通过选择 system,job name 超链接来获取详细信息。 在此示例中,表创建仍在等待中:在这里,由于 429“请求过多”错误,表创建失败:
表创建的系统作业成功,但您会收到与无效或缺失列相关的运行时错误。
解决方案:如果在创建表字段时发生故障,则表创建过程不会失败,并尝试继续创建其余字段。 这是因为当某些列类型不受支持时,系统不希望阻止虚拟表的创建。 要获取有关错误的详细信息,请在 管理系统>设置>自定义>启用日志记录到插件跟踪日志中启用日志记录,然后删除虚拟表并尝试再次创建它。