备注
从 2021 年 11 月起,数据导出服务已被弃用。 数据导出服务将继续工作并将得到全面支持,直到它在 2022 年 11 月达到支持结束和生命周期结束日期为止。 详细信息:https://aka.ms/DESDeprecationBlog
数据导出服务是在 Microsoft 市场中提供的附加服务,可将数据从 Microsoft Dataverse 数据库复制到客户拥有的Azure订阅中的Azure SQL Database存储。 受支持的目标目的地包括 Azure SQL 数据库和在 Azure 虚拟机上的 SQL Server。 数据导出服务最初智能地同步整个数据,然后随着系统中发生更改(增量更改)持续同步。 这有助于使用Azure数据和分析服务在数据的基础上启用多个分析和报告方案,并为客户和合作伙伴提供构建自定义解决方案的新可能性。
备注
强烈建议您使用 Azure Synapse Link for Dataverse 将 Dataverse 数据导出到 Azure Synapse Analytics 和/或 Azure Data Lake Gen2。 详细信息:通过 Azure Synapse Link 加速 Dataverse 的洞察时间
可以将数据导出服务用于客户参与应用(Dynamics 365 Sales、Dynamics 365 Customer Service、Dynamics 365 Field Service、Dynamics 365市场营销和Dynamics 365 Project Service Automation)。
有关用于管理数据导出服务的配置和管理的编程接口的信息,请参阅开发人员指南中的数据导出服务。
使用数据导出服务的先决条件
若要开始使用数据导出服务,需要满足以下先决条件。
Azure SQL Database服务
客户拥有Azure SQL Database订阅。 此订阅必须允许同步的数据量。
防火墙设置。 我们建议关闭允许访问 Azure 服务并指定本主题中列出的相应客户端 IP 地址。 详细信息:Azure SQL数据导出服务使用的数据库静态 IP 地址
或者,您可以启用允许访问 Azure 服务以允许所有 Azure 服务访问。
对于Azure VM 上的SQL Server,应启用“通过 Internet 连接到SQL Server”选项。 详细信息:Azure:连接到 Azure 上的 SQL Server 虚拟机
此外,配置防火墙规则以允许数据导出服务和SQL Server之间的通信。
数据库用户必须根据下面的表具有数据库和架构级别的权限。 数据库用户用于数据导出连接字符串。
需要数据库权限。
权限类型代码 权限名称 CRTB CREATE TABLE CRTY 创建类型 CRVW 创建视图 CRPR 创建流程 ALUS 更改任何用户 VWDS 查看数据库状态 需要架构权限。
权限类型代码 权限名称 AL 修改 IN 插入 深度学习 删除 SL SELECT UP 更新 EX 执行 RF 引用
Azure Key Vault服务
客户拥有的 Key Vault 订阅,用于安全地维护数据库连接字符串。
将 PermissionsToSecrets 权限授予 ID 为“b861dbcc-a7ef-4219-a005-0e4de4ea7dcf”的应用程序。这可以通过运行下方的 AzurePowerShell 命令来完成,用于访问包含连接字符串机密的 Key Vault。 详细信息:如何设置 Azure Key Vault
应将 Key Vault 中的密钥用组织(OrgId)和租户 ID(TenantId)标记。 这可以通过运行以下 AzurePowerShell 命令来完成。 详细信息:如何设置 Azure Key Vault
配置防火墙规则以允许数据导出服务和Azure Key Vault之间的通信。
客户互动应用
版本 9.0 或更高版本的环境。
必须安装数据导出服务解决方案。
- 转到 Settings>Microsoft marketplace> 搜索或浏览到 Microsoft Dynamics 365 - 数据导出服务, 然后选择“立即获取它。
- 或者,可以在 Microsoft 商店中找到它。
将要添加到“导出配置文件”的实体必须启用更改跟踪。 若要确保可以同步标准或自定义实体,转到自定义>自定义系统,然后选择实体。 在常规选项卡上,确保启用了数据服务部分下的更改跟踪选项。
您在该环境中必须具备系统管理员的安全角色。
web 浏览器
在 Web 浏览器中启用域 https://discovery.crmreplication.azure.net/ 的弹出窗口。 导航到“设置”>“数据导出”时,自动登录需要此设置。
所需的服务、凭据和权限
若要使用数据导出服务功能,必须具有下列服务、凭据和权限。
订阅。 只有为其分派系统管理员安全角色的用户才能设置或更改导出配置文件。
Azure订阅,其中包括以下服务。
Azure虚拟机上的Azure SQL数据库或Azure SQL服务器。
Azure Key Vault。
重要
若要使用数据导出服务,客户参与应用和Azure Key Vault服务必须在同一租户和同一Microsoft Entra ID内运行。 更多信息:Azure 与 Microsoft 365 的集成
Azure SQL Database服务可以位于服务中的同一租户或不同租户中。
使用数据导出服务前应了解的事项
只要对环境执行以下任何操作,都必须删除导出配置文件并重新创建。
- 还原环境。
- 复制(完整或最低)环境。
- 重置环境。
- 将环境移动到其他国家或地区。
为此,请删除 “导出配置文件” 视图中的配置文件,然后删除表和存储过程,最后创建一个新配置文件。 详细信息:如何删除所有数据导出配置文件表和存储过程
数据导出服务对启用了启动管理模式的沙盒或生产环境不起作用。 详细信息:管理模式
发生以下操作时,数据导出服务不会删除目标Azure SQL数据库中关联的表、列或存储过程对象。
实体已被删除。
将删除字段。
已从导出配置文件中删除一个实体。
必须手动丢弃这些项。 如何删除特定实体的数据导出配置文件表和存储过程 元数据删除通知记录在 unprocessablemessages 文件夹中。 错误处理和监视
导出配置文件
为了从客户互动应用导出数据,管理员创建一个导出配置文件。 可以创建并激活多个配置文件,以便将数据同时同步到多个目标数据库。
导出配置文件是数据导出服务的核心概念。 导出配置文件收集设置和配置信息以将数据与目标数据库同步。 作为导出配置文件的一部分,管理员提供要导出到目标数据库的实体的列表。 导出配置文件一经激活,即开始自动同步数据。 首先导出与所选每个实体对应的全部数据。 之后,仅在客户参与应用中采用推送机制来近乎实时持续同步实体记录或元数据发生更改时的数据。 因此,您不需要设置计划来从客户互动应用检索数据。
只有启用了更改跟踪的实体才能添加到导出配置文件中。 请注意,用于捕获数据的大多数标准实体已启用了更改跟踪。 必须先为自定义实体显式启用更改跟踪,才能将其添加到导出配置文件。 详细信息:启用更改跟踪以控制数据同步
数据导出服务同时执行元数据和数据同步。 每个实体转换为一个表,而每个字段则转换为目标数据库表中的一列。 表和列名称使用元数据的架构名称。
导出配置文件一经激活,即收集数据同步的统计信息,这些统计信息可以帮助改善所导出数据的操作可视性和诊断。
通过导出配置文件实现的数据同步
| 类别 | 功能 | 支持的数据类型 |
|---|---|---|
| 初始同步 | 元数据 - 基本数据类型 | 整数、浮点数、小数、单行文本、多行文本、日期和时间数据类型。 |
| 初始同步 | 元数据 - 高级数据类型 | 货币、参与者列表、选项集、状态、状态原因、查找(包括客户和相关类型查找)。 只有导出版本 8.1 及更高版本才能使用 PartyList。 |
| 初始同步 | 数据 - 基本数据类型 | 所有基本数据类型。 |
| 初始同步 | 数据 - 高级数据类型 | 所有高级数据类型。 |
| 增量同步 | 修改架构 - 基本类型 | 添加或修改字段,涵盖所有基本数据类型。 |
| 增量同步 | 修改架构 - 高级类型 | 添加或修改字段更改,所有高级数据类型。 |
| 增量同步 | 修改数据 - 基本类型 | 所有基本数据类型。 |
| 增量同步 | 修改数据 - 高级类型 | 所有高级数据类型,如 PartyList。 |
创建导出配置文件
创建导出配置文件之前,确保满足以下要求。
您的环境已安装数据导出服务解决方案。
维护 SQL 数据库的连接字符串在 Key Vault 中,并复制 Key Vault 的 URL 提供给导出配置。 详细信息:Azure:开始使用 Azure Key Vault
已为要添加到导出配置文件的实体启用了更改跟踪。 详细信息:启用更改跟踪以控制数据同步
您的 SQL 数据库服务存储空间充足,可以存储数据。
您是环境中的系统管理员。
转到设置>数据导出。
查看声明,然后选择继续,如果不希望导出数据,则单击取消。
若要新建导出配置文件,请选择新建。
在 Properties 步骤中,输入以下信息,然后选择 Next以继续而不连接到Key Vault。 选择 Validate 使用您提供的 Key Vault URL 来连接到 Key Vault。
名称。 配置文件的唯一名称。 该字段是必需字段。
Key Vault 连接 URL。 指向与用于连接到目标数据库的凭据一起存储的connection string的Key Vault URL。 该字段是必需字段。 详细信息:如何设置 Azure Key Vault
重要
Key Vault 连接 URL 区分大小写。 在运行本主题中的 Windows PowerShell 命令后,准确输入显示的 Key Vault 连接 URL。
架构。 备用数据库架构的名称。 只有字母数字字符才有效。 此字段为可选字段。 默认情况下,dbo 是用于目标 SQL 数据库的架构。
前缀。 要用作目标数据库中创建的表名称的前缀。 这可以帮助您轻松识别为目标数据库中的导出配置文件创建的表。 指定时,确保前缀少于 15 个字符。 此字段为可选字段,并且仅允许字母数字字符。
重试计数。 在目标表中插入或更新失败时重试记录的次数。 该字段是必需字段。 可接受值为 0-20,默认值为 12。
重试间隔时间。 失败时重试前的等待秒数。 该字段是必需字段。 可接受值为 0-3600,默认值为 5。
读取删除日志。 用于记录删除的记录的可选设置。
在选择实体步骤中,选择要导出到目标 SQL 数据库的实体,然后选择下一步。
在选择关系步骤中,您可以同步在上一步中选择的实体所存在的 M:N(多对多)关系。 选择“下一步”。
在 Summary 步骤中,选择创建和激活以创建配置文件记录并连接到开始同步过程的Key Vault。 否则,选择创建以保存导出配置文件并在以后激活。
修改现有导出配置文件
可以在要复制的现有导出配置文件中添加或删除实体和关系。
转到设置>数据导出。
在“所有数据导出配置文件”视图中,选择要更改的导出配置文件。
在“操作”工具栏上,选择管理实体,为数据导出添加或删除实体。 若要添加或删除实体关系,请选择管理关系。
选择要添加或删除的实体或实体关系。
选择更新提交对导出配置文件的更改。
重要
当您从导出配置中删除实体或实体关系时,目标数据库中的对应表不会被删除。 在您重新添加已删除的实体之前,必须先在目标数据库中删除相应的表。 若要放弃实体表,请参阅如何删除特定实体的数据导出配置文件表和存储过程。
目标Azure SQL Database的表详细信息
数据导出服务为数据和元数据创建表。 为同步的每个实体和 M:N 关系创建一个表。
激活导出配置文件后,这些表将在目标数据库中创建。 这些是系统表,并且将不添加 SinkCreatedTime 和 SinkModifiedTime 字段。
| 表名 | 已创建 |
|---|---|
| <前缀>_GlobalOptionsetMetadata | 在激活导出配置文件后。 |
| <前缀>_OptionsetMetadata | 在激活导出配置文件后。 |
| <前缀>_StateMetadata | 在激活导出配置文件后。 |
| <前缀>_StatusMetadata | 在激活导出配置文件后。 |
| <前缀>_TargetMetadata | 在激活导出配置文件后。 |
| <前缀>_AttributeMetadata | 在激活导出配置文件后。 |
| <前缀>_DeleteLog | 在激活导出配置文件时启用删除日志选项。 |
解决同步问题
即使在数次重试后,记录同步仍可能由于数据库存储约束或由于长时间运行的查询导致的表锁定而失败。 若要解决这些失败,可以强制仅重新同步失败记录或重新同步所有记录。
查看您的导出配置以查找任何存在记录同步失败的配置。 通过在同步区域查看数据配置文件,或打开一个导出配置文件(例如此出现联系人实体记录同步失败的配置文件)来执行此操作。
检查同步失败的根源并解决。 详细信息:错误处理和监视
解决该问题后,请重新同步失败的记录。
备注
失败记录同步是公共预览功能。
- 预览功能不适合生产使用且功能可能受限。 这些功能在正式发布之前推出,以便客户可以提前使用并提供反馈。
- 我们期望更改此功能,因此请勿在生产中使用。 仅在测试和开发环境中使用。
- Microsoft 不支持此预览功能。 Microsoft Dynamics 365技术支持无法帮助你解决问题。 预览版功能不适合生产使用且受单独的补充使用条款的约束。
登录到您的环境并转到设置>数据导出。
打开包含记录同步失败的导出配置文件。
在“导出配置文件”工具栏上,请选择重新同步失败记录。
在确认对话中,在成功重新同步失败记录后选择确定。
- 通过打开数据导出配置文件并查看属性和概述选项卡上的失败通知计数器来确认不包含失败记录通知的导出配置文件,此计数器应为 0。 选择“导出配置文件”工具栏上的刷新,确保失败通知值是最新的。
- 预览功能不适合生产使用且功能可能受限。 这些功能在正式发布之前推出,以便客户可以提前使用并提供反馈。
如果在尝试执行之前的步骤重新同步后,记录同步仍然失败,请联系 Microsoft 客户支持服务。
错误处理和监视
若要查看导出配置文件的同步状态,请转到设置>数据导出,然后打开导出配置文件。 将在实体选项卡上显示同步状态,包括不能同步的记录的失败记录列。 对于任何失败记录,可以通过选择命令栏中的失败记录下载所有这些记录(包括状态原因)的列表。
在导出配置文件中,可以选择属性和概览显示配置文件的属性。 选择关系查看关系同步状态。
如何查看有关同步失败的记录的详细信息
查看失败记录日志可以帮助您确定同步失败的原因。 若要查看目标Azure目标数据库中失败的记录,请使用 Azure Storage Explorer,这是一个免费的独立应用,可用于轻松处理Azure Storage数据。 详细信息:Azure Storage Explorer。
转到设置>数据导出。
在“所有数据导出配置文件”视图中,选择带有失败通知的导出配置文件。
在“操作”工具栏上,选择失败记录。
在“下载失败记录”对话框中,选择复制 Blob URL,然后选择确定。
备注
blob URL 的有效期最多 24 小时。 如果 URL 的期间超过了 24 小时,请重复前面介绍的步骤生成新 blob URL。
启动Azure Storage Explorer。
在 Azure Storage Explorer 中,选择 连接到 Azure Storage。
将剪贴板中的 URL 粘贴到 Connect 到 Azure Storage 框中,然后选择 Next。
在“连接摘要”页面中,选择连接。
Azure Storage Explorer连接到目标数据库。 如果导出配置文件存在失败的记录,Azure Storage Explorer显示失败的记录同步文件夹。
如何查看有关同步失败的记录的详细信息(预览)
您可以直接从“数据导出服务”用户界面下载失败的记录。 此功能当前处于预览版阶段,非常适合您进行测试并提供反馈。
下载失败记录的步骤:
识别包含失败记录的配置文件。
选择配置文件,然后在顶部菜单栏中选择 下载失败记录 (预览)。
在下载失败记录对话框中,您将看到最后 20 个(最多)blob 文件的排序列表。 选择要下载的文件,然后选择确定。
下载后,在您选择的文本编辑器(例如,记事本)中打开文件并查看失败详细信息。
失败的记录同步、文件夹结构和日志文件
失败记录的 Azure Blob 存储的 URL 指向以下具有文件夹结构的位置:
data。 此文件夹包含失败数据通知以及记录数据的相关 JSON。
metadata。 此文件夹包含失败元数据通知以及元数据的相关 JSON。
failurelog. 此文件夹包含提供有关同步失败以及失败原因的信息的日志。
forcerefreshfailurelog。 此文件夹包含上次运行用于重新同步失败记录的数据导出服务失败记录命令的错误。
unprocessablemessages。 此文件夹包含因数据或元数据被删除,或相关 JSON 被删除而未处理的数据通知。
failurelog 和 forcerefreshfailurelog 文件夹的结构为年\月\日\小时,这样您可以迅速找到最近的失败。 将删除所有超过 30 天的失败记录。
下面是一个示例日志文件,该日志文件指示一个联系人实体记录同步失败。
Entity: contact, RecordId: 459d1d3e-7cc8-e611-80f7-5065f38bf1c1, NotificationTime: 12/28/2016 12:32:39 AM, ChangeType: Update, FailureReason: The database 'tempdb' has reached its size quota. Partition or delete data, drop indexes, or consult the documentation for possible resolutions.
The statement has been terminated.
记录同步失败的常见原因
这里是可能出现记录同步失败的一些原因。
目标数据库没有足够的存储空间。 尝试重新同步失败的记录之前,请根据需要增加或释放Azure SQL Database存储。 当出现此问题时,类似消息记录到失败日志中。
数据库 'databasename' 已达到其大小配额。 分区或删除数据,删除索引,或参阅文档以了解可行解决方法。
Azure SQL Database 的同步超时问题。 一次处理大量数据时,在数据导出配置文件初始同步期间可能发生此情况。 当出现此问题,请重新同步失败记录。 解决同步问题
在数据导出中使用Azure SQL Database时的最佳做法
若要避免由于资源限制而导致的同步错误,我们建议在使用数据导出服务时,使用Azure SQL 数据库 Premium P1或更高级别的计划。 详细信息:Azure SQL Database资源限制和 SQL 数据库定价
将Azure SQL Database设置为使用读取提交的快照隔离(RCSI),以便对在目标数据库上并发运行的工作负荷,尤其是执行长时间读取查询的工作负荷(例如报告和ETL作业),进行优化。 这样可减少超时错误的出现,这些错误可能由于读\写冲突在数据导出服务中出现。
为了帮助提高查询效果,建议将数据导出服务数据库的最大并行度 (MAXDOP) 设置为 1。 详细信息:MSDN:服务器内存选项
请经常评估碎片数量,并在必要时,在数据导出服务数据库中重建索引。 详细信息:重新组织和重建索引
定期更新数据导出服务数据库中表和索引视图上的数据统计信息。 详细信息:更新统计信息
监视数据导出服务数据库的利用率。 详细信息:性能监控
关于数据同步延迟
数据导出服务被构建为通过侦听客户互动应用中发生的变化使用推送机制将数据更改同步到目标数据库。 服务会努力在几分钟内推送数据,但有些因素可能影响端到端的同步延迟。
影响同步持续时间的因素包括以下几方面:
- 客户互动应用的当前工作负荷。
- 客户互动应用中的数据更改率。
- 添加到每个导出配置文件中的实体及其属性的数量。
- SQL Server性能。 例如:
- SQL 连接设置时间。
- SQL 语句执行时间。
根据我们对服务的监视,观察到当服务在以下条件下运行时,大多数正在进行的增量同步会在 15 分钟内完成:
- 所发生的同步是增量同步而不是初始同步。 增量同步仅适用于数据更改操作,包括记录创建、更新和删除事务。 请注意,增量同步在初始同步完成后即开始。
- 在客户互动应用中,导出配置文件中所有实体的最大数据更改速率均少于 3000 条记录/小时。 由于记录批量更改导致数据更改速率的任何突然增加超过最大更改速率,都将导致额外延迟。
- 添加到导出配置文件的每个实体属性均少于 150 个。
- 数据库连接或 SQL 语句执行在 10 秒之内完成。 如果超过此限制,将造成额外延迟。
- 同步期间不会出现目标数据库连接或 SQL 执行错误。
在满足上面条件时,15 分钟是典型的同步延迟。 Microsoft 不为数据导出服务提供服务级别协议 (SLA),且不对同步延迟时间作出保证或承诺。
如何设置Azure Key Vault
运行此处所述的 Windows PowerShell 脚本,并以 Azure 帐户管理员的身份授予数据导出服务访问 Azure Key Vault 的权限。 此脚本显示创建用于访问连接字符串的导出配置文件所需的密钥保管库 URL。
在运行脚本之前,请替换以下变量的占位符。
$subscriptionId。 您希望使用的密钥保管库资源组。 如果资源组尚不存在,将使用您指定的名称创建一个新的资源组。 在此示例中,使用的是 ContosoResourceGroup1。
$location。 指定资源组所在位置或应该在的位置,如 West US。
$connectionString。 Azure SQL Database的连接字符串。 可以使用 ADO.NET 连接字符串,因为它在 Azure 仪表板中显示。
$organizationIdList = 要允许为数据导出服务启用的组织按组织 ID (organizationId) 排列且以逗号分隔的列表。 要查找组织的 ID,请转到设置>自定义>开发人员资源。 组织 ID 位于环境引用信息下。
$tenantId。 指定与 Key Vault 订阅关联的 Azure Active Directory 租户 ID。
重要
Azure订阅可以有多个Azure Active Directory租户 ID。 请确保选择与要用于数据导出的环境关联的正确Azure Active Directory租户 ID。
备注
确保$connectionString中引用的用户 ID 对目标Azure SQL数据库具有适当的权限。
# -------------------------------------------------------------------------------- #
# Provide the value for the following parameters before executing the script
$subscriptionId = 'ContosoSubscriptionId'
$keyvaultName = 'ContosoKeyVault'
$secretName = 'ContosoDataExportSecret'
$resourceGroupName = 'ContosoResourceGroup1'
$location = 'West US'
$connectionString = 'AzureSQLconnectionString'
$organizationIdList = 'ContosoSalesOrg1_id, ContosoSalesOrg2_id'
$tenantId = 'tenantId'
# -------------------------------------------------------------------------------- #
# Login to Azure account, select subscription and tenant Id
Connect-AzAccount -Tenant $tenantId -Subscription $subscriptionId
# Create new resource group if not exists.
$rgAvail = Get-AzResourceGroup -Name $resourceGroupName -Location $location -ErrorAction SilentlyContinue
if(!$rgAvail){
New-AzResourceGroup -Name $resourceGroupName -Location $location
}
# Create new key vault if not exists.
$kvAvail = Get-AzKeyVault -VaultName $keyvaultName -ResourceGroupName $resourceGroupName -ErrorAction SilentlyContinue
if(!$kvAvail){
New-AzKeyVault -VaultName $keyvaultName -ResourceGroupName $resourceGroupName -Location $location
# Wait few seconds for DNS entry to propagate
Start-Sleep -Seconds 15
}
# Create tags to store allowed set of Organizations.
$secretTags = @{}
foreach ($orgId in $organizationIdList.Split(',')) {
$secretTags.Add($orgId.Trim(), $tenantId)
}
# Add or update a secret to key vault.
$secretValue = ConvertTo-SecureString $connectionString -AsPlainText -Force
$secret = Set-AzKeyVaultSecret -VaultName $keyvaultName -Name $secretName -SecretValue $secretValue -Tags $secretTags
# Authorize application to access key vault.
$servicePrincipal = 'b861dbcc-a7ef-4219-a005-0e4de4ea7dcf'
Set-AzKeyVaultAccessPolicy -VaultName $keyvaultName -ServicePrincipalName $servicePrincipal -PermissionsToSecrets get
# Display secret url.
Write-Host "Connection key vault URL is "$secret.id.TrimEnd($secret.Version)""
如何删除所有数据导出配置文件表和存储过程
重要
运行此 SQL 语句之前,请确保已在此语句中正确定义 @prefix 和 @schema 值。 运行此 SQL 语句之后,需要重新创建“导出配置文件”。
-----------------------------------------------------------------
-- Provide the value for the following parameters
DECLARE @prefix nvarchar(32) =''
DECLARE @schema nvarchar(32) ='dbo'
-----------------------------------------------------------------
DECLARE @sql nvarchar(max) = '';
SELECT @sql += 'DROP TABLE ' + QUOTENAME([TABLE_SCHEMA]) + '.' + QUOTENAME([TABLE_NAME]) + ';'
FROM [INFORMATION_SCHEMA].[TABLES]
WHERE [TABLE_TYPE] = 'BASE TABLE' AND [TABLE_NAME] like @prefix + '_%' AND [TABLE_SCHEMA]= @schema;
PRINT @sql
EXEC SP_EXECUTESQL @sql;
PRINT 'Finished dropping all tables. Starting to drop all stored procedures now.'
SELECT @sql='';
SELECT @sql += 'DROP PROCEDURE ' + QUOTENAME([ROUTINE_SCHEMA]) + '.' + QUOTENAME([ROUTINE_NAME]) + ';'
FROM [INFORMATION_SCHEMA].[ROUTINES]
WHERE [ROUTINE_TYPE] = 'PROCEDURE' AND [ROUTINE_NAME] like @prefix + '_%' AND [ROUTINE_SCHEMA]= @schema;
PRINT @sql
EXEC SP_EXECUTESQL @sql;
PRINT 'Finished dropping all stored procedures. Starting to drop all types now.'
SELECT @sql='';
SELECT @sql += 'DROP TYPE ' + QUOTENAME(SCHEMA_NAME([SCHEMA_ID])) + '.' + QUOTENAME([NAME]) + ';'
FROM SYS.TYPES
WHERE is_user_defined = 1 AND [NAME] LIKE @prefix + '_%' AND [SCHEMA_ID]=SCHEMA_ID(@schema);
PRINT @sql
EXEC SP_EXECUTESQL @sql;
如何删除特定实体的数据导出配置文件表和存储过程
重要
运行此 SQL 语句之前,请确保已在此语句中正确定义 @prefix、@schema 和 @entityName 值。 在此示例中,将删除线索实体表、类型和存储过程。
-----------------------------------------------------------------
-- Provide the value for the following parameters
DECLARE @prefix nvarchar(32) ='crm'
DECLARE @schema nvarchar(32) ='dbo'
DECLARE @entityName nvarchar(32) ='lead'
-----------------------------------------------------------------
DECLARE @sql nvarchar(max) = '';
IF @prefix != ''
BEGIN
SET @prefix = @prefix + '_'
END
SELECT @sql += 'DROP TABLE ' + QUOTENAME([TABLE_SCHEMA]) + '.' + QUOTENAME([TABLE_NAME]) + ';'
FROM [INFORMATION_SCHEMA].[TABLES]
WHERE [TABLE_TYPE] = 'BASE TABLE' AND [TABLE_NAME] like @prefix + @entityName AND [TABLE_SCHEMA]= @schema;
PRINT @sql
EXEC SP_EXECUTESQL @sql;
PRINT 'Finished dropping the entity. Starting to drop the types associated with the entity'
SELECT @sql='';
SELECT @sql += 'DROP TYPE ' + QUOTENAME(SCHEMA_NAME([SCHEMA_ID])) + '.' + QUOTENAME([NAME]) + ';'
FROM SYS.TYPES
WHERE
is_user_defined = 1
AND (
[NAME] LIKE @prefix + @entityName +'Type'
OR [NAME] LIKE @prefix + @entityName +'IdType'
)
AND [SCHEMA_ID] = SCHEMA_ID(@schema);
PRINT @sql
EXEC SP_EXECUTESQL @sql;
如何从 Power Platform 管理中心卸载数据导出服务应用
- 导航到高级设置。
- 选择设置 > 自定义,然后选择解决方案。
- 选择由 Microsoft Dynamics 365 发布的 DataExportService,然后选择 Delete。
查找 Microsoft Entra 的租户 ID 以查找您的租户
- 登录到 Azure 门户。
- 在 Azure 服务 下选择 租户属性。
- 选择租户 ID 字段中的值。
Azure SQL数据导出服务使用的数据库静态 IP 地址
在 Azure SQL 数据库中,选择 设置服务器防火墙,将 允许访问 Azure 服务 设置为 关闭,选择 添加客户端 IP,然后添加适合您环境区域的 IP 地址。 详细信息:
| 区域 | 新 IP 地址 | 旧 IP 地址 |
|---|---|---|
| 美国西部 | 20.245.127.60 | 13.64.148.9 |
| 美国东部 | 172.174.41.63 | 20.228.153.81 |
| 东亚 | 20.239.192.9 | 104.208.84.217 |
| 东南亚 | 20.24.15.60 | 20.205.153.14 |
| 印度中部 | 20.219.158.75 | 20.198.113.107 |
| 印度南部 | 52.140.54.95 | 104.211.204.18 |
| 西欧 | 20.126.43.104 | 40.68.244.253 |
| 北欧 | 20.166.94.137 | 20.238.83.32 |
| 日本西部 | 无更改 | 104.214.144.93 |
| 日本东部 | 52.253.104.175 | 20.89.138.246 |
| 巴西南部 | 4.228.211.102 | 20.197.186.17 |
| 澳大利亚东南部 | 无更改 | 20.70.112.80 |
| 澳大利亚东部 | 20.5.88.96 | 20.213.58.3 |
| 加拿大中部 | 20.220.227.230 | 20.151.173.107 |
| 加拿大东部 | 40.86.216.207 | 52.229.109.91 |
| 英国西部 | 51.142.173.150 | 20.68.113.18 |
| 英国南部 | 20.117.159.198 | 20.117.89.184 |
备注
北美客户应该向美国东部和美国西部的已批准列表添加 IP 地址。
为了防止数据同步中断,客户应保留新 IP 地址和旧 IP 地址。
已知问题
删除的记录可能在同步失败后重新插入实体表
当您从同步失败中恢复后,之前删除的记录可能重新插入到原始实体表。 若要在出现同步失败时解决此问题,请执行以下步骤。
创建启用“写日志与删日志”的导出配置文件。 重新创建未启用“写入删除日志”的现有导出配置文件。
为搜索 DeleteLog 表中记录的Azure SQL目标数据库创建和执行 SQL 查询。 如果找到一个或多个记录,表示存在删除的记录。
如果 DeleteLog 表中存在一个或多个记录,则请创建并运行一个 SQL 查询,用于检测符合以下条件的环境:在 DeleteLog 表中找到的记录的记录 ID 与 EntityName 表中记录的记录 ID 匹配,并且 deleteLog 中的 versionNumber 比 EntityName 表中记录的 versionNumber 高。 当记录 ID 匹配时,从 EntityName 表中删除该记录。 例如,如果 DeleteLog 表的 AccountId 列的记录 ID 与 AccountBase 实体表的 AccountId 列的记录 ID 匹配,并且 DeleteLog 中的 versionNumber 比 Account 表中的 versionNumber 高,则删除 AccountBase 实体表中的记录。
重要
建议您根据自己的业务需求和要求经常执行 SQL 查询以删除记录,但安排在非运营时间执行。
用于删除实体记录的示例查询。
DELETE A FROM [dbo].[prefix_account] A
WHERE id IN (SELECT CONVERT(uniqueidentifier, recordid) FROM [dbo].[prefix_DeleteLog] DL WHERE DL.entityname ='account'
AND DL.VersionNumber > A.VersionNumber)
不支持数据导出的实体
此处列出的实体尽管支持更改跟踪,但不支持使用数据导出服务导出数据。
| 实体 | 表名称 | 解决办法 |
|---|---|---|
| 活动 | ActivityPointerBase | 为导出选择具体活动实体,如“电话联络”、“约会”、“电子邮件”和“任务”。 |
无法创建大于允许的最大行大小 (8K) 的行
如果您的错误日志显示“无法创建大于允许的最大行大小 8060 的大小(尺寸)行”,那么您遇到了超过允许的最大行大小限制的问题。 数据导出服务不支持大于允许的最大行大小 8k 的行大小。 若要缓解此问题,您需要确保遵循行大小限制。
源中字符串的长度长于 ColumnName 的目标架构
如果您的错误日志显示“源中的字符串长度长于 [ColumnName, MaxDataLength] 的目标架构”,那么您遇到了源数据的字符串长度长于目标数据的问题。 如果源数据的字符串长度长于目标数据,写入目标将失败。若要缓解此问题,您需要减小数据大小或在 DB 中手动增加列的长度(大于 MaxLength)。
不支持附件
不支持导出诸如注释表上的文档正文之类的附件。
隐私声明
通过使用数据导出服务,从Dynamics 365内激活数据导出配置文件时,添加到配置文件的实体的数据将发送到Azure。 初始同步包含与添加到此导出配置文件的实体关联的所有数据,但之后同步仅包含新更改,这些更新将持续发送至“数据导出服务”。 发送到数据导出服务的数据暂时存储在Azure Service Bus和Azure Storage中,在Azure Service Fabric中处理,最后同步(插入、更新或删除)到Azure订阅中指定的目标数据库。 同步数据后,将从Azure Service Bus和Azure Storage中删除数据。 如果在数据同步期间发生故障,则与实体类型、记录 ID 和同步时间戳对应的最小数据存储在Azure Storage中,以允许下载未更新的记录列表。
管理员可以随时停用此数据导出配置文件以停止数据同步。 此外,管理员还可以删除此导出配置文件以删除任何失败的记录日志,并且可以卸载“数据导出服务”解决方案以停止使用“数据导出服务”。
数据同步以安全的方式在Dynamics 365和数据导出服务之间持续发生。 数据在Dynamics 365与数据导出服务之间连续交换时进行加密。
以下各节详细介绍了与数据导出服务相关的Azure组件和服务。
这提供了 API 和计算资源的 Azure VM,用于处理从 Dynamics 365 收到的记录同步通知,并进一步处理这些通知以在目标数据库中插入、更新或删除记录数据。 由Azure Service Fabric运行时管理的虚拟机上部署的微服务处理与数据同步相关的所有计算服务。
在此提供的消息总线中,Dynamics 365将同步通知消息插入其中,这些消息由Azure Service Fabric中的计算节点进行处理。 每条消息都存储有关组织 ID 和记录的信息,以便同步数据。 Azure Service Bus中的数据是静态加密的,只能由数据导出服务访问。
如果记录同步通知的数据太大而无法存储在消息中,或者遇到处理同步通知的暂时性故障,数据会暂时存储在Azure Blob Storage中。 这些 blob 通过利用 Azure Storage SDK 中的最新功能进行加密,该功能提供对称和非对称加密支持,并与Azure Key Vault集成。
Azure SQL Database存储数据导出配置文件配置和数据同步指标。