虚拟表的已知限制和故障排除

本文阐述在 Microsoft Dataverse 中使用虚拟表时的已知限制及故障排除技巧。

以下是使用虚拟连接器提供程序创建的虚拟表的已知限制列表。

一般限制

  • 使用的表或列表必须至少包含一个用作主要字段的字符串字段和一个 GUID 字段。 缺少这些字符串字段将导致虚拟表无法创建,并在表详情检索阶段触发错误。
    • SharePoint 使用所有列表中存在的隐藏数字 ID 字段
    • SQL 可以使用 GUID 或整数字段
    • Excel 必须具有 GUID 字段
  • Dataverse 仅能创建包含与 Dataverse 兼容数据类型的列。 这包括以下数据类型:
    • 字符串
    • 多行文本(备忘录)
    • 整数
    • 小数
    • 流通股
    • 日期/时间
    • 是/否(布尔)
    • 选择项(多值选择)
    • 超链接/Url
  • 虚拟表不支持数据类型:
    • 文件和附件
    • 图像
  • 虚拟表中文本列允许的最大字符长度为 4000 个字符。 如果源表的最大字符限制大于此值,任何超过最大字符限制的创建或更新操作都将导致验证错误,操作将失败。
  • 虚拟表查询只能返回 1,000 个记录。 如果与虚拟表具有 1:N 或 N 自定义多表(多态)关系,任何超过此限制的查询都将失败并提供一个错误。 解决此限制的方法是在您的查询中使用筛选来减少记录集。
  • 由于 Dataverse 仅能对本地存储的数据执行和存储审核数据,因此虚拟表不支持审核功能。
  • 无法为虚拟表计算汇总和计算字段。 这是因为汇总操作在 Dataverse 中属于服务器端计算,需要数据本地存储。
  • 公式列不能使用虚拟表。
  • Microsoft 提供的 Microsoft Entra 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 数据类型列在 Dataverse 虚拟表中映射为 decimal 数据类型。 当在 bigint 映射到整数流程中提供平台支持时,需要删除虚拟表中先前创建的列,并应创建新列。
  • 目前虚拟表中不能包含以下列类型:
    • 时间
    • Datetime2
    • 图像
    • 几何
    • 地区
    • RowVersion
    • 选择
  • 以下列类型包含在虚拟表中,但只显示为文本字段:
    • HierarchyID
    • XML
    • Sqlvariant

故障排除

  • 即使您的源表中有更多记录,虚拟表中也只有一 (1) 个记录。
    解决方案:检查源表是否已定义主键。

  • 当 Power Apps (make.powerapps.com) 检索表列表或选择完成创建表时,可能出现以下错误之一:

    • “未找到客户细分 msdyn_get_required_fields 的资源”
    • “调用...时出错,请验证环境中是否存在连接...”
    • “序列不与 msdyn_get_required_fields 的元素匹配”
      解决方案:部分情况下虚拟连接器提供程序可能未安装最新版本。 要确定虚拟连接器提供程序解决方案是否需要更新,请执行以下操作:
    1. 在左侧导航窗格中选择解决方案。 如果项目不在侧面板窗格中,请选择 …更多,然后选择所需项目。
    2. 选择历史记录选项卡。
    3. 搜索ConnectorProvider
    4. 查看信息,确认是否需要更新解决方案。
    5. 如果历史记录表明需要更新,转到 Microsoft 商业市场搜索虚拟连接器提供程序,然后选择立即获取将解决方案导入您的环境。
    6. 再次按照以下步骤创建虚拟表。
  • 检索连接列表时将显示一条消息“当前环境中未找到连接‘xyz’”。 。
    解决方案:当用户 Dataverse 环境中存在大量连接时会发生此问题。 连接器提供程序解决方案的版本 1029 已修复此问题。 要确定虚拟连接器提供程序解决方案是否需要更新,请执行以下操作:

    1. 在左侧导航窗格中选择解决方案。 如果项目不在侧面板窗格中,请选择 …更多,然后选择所需项目。
    2. 选择历史记录选项卡。
    3. 搜索ConnectorProvider
    4. 查看信息,确认是否需要更新解决方案。
    5. 如果历史记录表明需要更新,转到 Microsoft 商业市场搜索虚拟连接器提供程序,然后选择立即获取将解决方案导入您的环境。
    6. 再次按照以下步骤创建虚拟表。
  • 虚拟表创建过程中收到超时通知。
    解决方案:现有任务导致虚拟表创建延迟时可能出现此情况。 请在等待几分钟后重试。

  • 收到“发生意外错误”通知
    解决方案:虚拟表数据源创建时使用了无效值导致此问题。 需定位引发错误的虚拟表数据源,删除后重新创建虚拟表。

    1. Power Apps 中选择设置(齿轮图标)>高级设置
    2. 在顶部菜单中选择设置
    3. 转到解决方案。 如果项目不在侧面板窗格中,请选择 …更多,然后选择所需项目。
    4. 转至包含虚拟表的解决方案(若未使用解决方案,则转至 Common Data Services 默认解决方案)。
    5. 在左侧面板中,选择虚拟表数据源
    6. 双击每个数据源(都以 VCP_DS_..." 开头),当您找到有错误的数据源时,删除该数据源。
    7. 重新创建虚拟表。
  • 此时将显示一条消息“此表已存在,您正在重新创建。 无法更改主字段和架构名称。”
    解决方案:此表已存在。 继续创建将重建该表,这将导致数据源中对表所做的任何更改(包括字段的添加或删除)在虚拟表中更新。 自定义名称和主字段值不可编辑。

  • 错误消息:“primary_key_name 不能为空”
    解决方案:您选择的表或列表未包含主键的 GUID 值。 您需要在源表中添加额外的 GUID 列才能创建虚拟表。

  • 您创建了 Excel 虚拟表,但在 Power Apps 的表格区域中未显示该表。
    解决方案:由于虚拟表创建是异步进行的,您可在系统作业中查看进程状态。 查找名称以 Microsoft.Wrm.DataProvider.Connector.Plugins.ConnectorGenerateVEPlugin 开头且关于列的值等于新虚拟表名称的系统作业。 如果状态仍为正在进行,请等待作业完成。 如果出现错误,您可以选择系统、作业名称超链接获取详细信息。 在此示例中,表创建仍在等待中:

    表创建等待

    在这里,由于 429“请求过多”错误,表创建失败:

    表创建由于 429 错误失败

  • 表创建系统作业已成功,但您收到与无效或缺失列相关的运行时错误。
    解决方案:若创建表字段时发生故障,表创建流程不会终止,而是尝试继续处理剩余字段。 这是因为系统不想在某些列类型不受支持时阻止虚拟表的创建。 要获取详细错误信息,请在管理>系统设置>自定义>启用插件跟踪日志记录中开启日志记录,随后删除虚拟表并重新创建。

  • 如果删除了连接到虚拟表的连接并重新创建它,则虚拟连接器提供程序应用将失去访问新连接的权限,从而阻止数据检索。
    解决方案:使用连接的共享功能与“虚拟连接器提供程序”应用手动共享重新创建的连接,以还原访问权限。

  • 当更新虚拟表的自定义数据提供程序以支持新的操作(例如创建、更新、删除)时,平台不会自动向现有的虚拟表实体添加相应的权限。
    解决方案:若要启用新权限,用户必须在更新数据提供程序后重新创建虚拟表实体。

后续步骤

使用虚拟连接器提供程序创建虚拟表(预览)

设置虚拟表关系