面向财务和运营应用的环境拷贝传统上是完整拷贝,这意味着包括整个数据库的配置、主数据和事务。 虽然有助于调试特定情况,但此完整副本具有显著增加财务和作应用和 Dataverse 的存储消耗的副作用。
在本教程中,您将学习如何:
作为此场景的一个示例,假设客户希望减少其沙盒和统一开发人员环境中的存储消耗,无需在沙盒和统一开发环境中保留生产环境 100% 的事务。 为了实现这种减少,客户将生产环境直接复制到其统一的开发人员环境,并指定要跳过的事务。
准备工作
本教程中的目标环境始终是包含由 Dataverse 托管的财务和运营应用程序的统一环境。 若要了解如何部署其中一个环境,请转到 教程:使用基于 ERP 的模板预配新环境 。
本教程中的源环境可以是由 Lifecycle Services 控制的环境,也可以是由 Dataverse 托管的其他统一环境。
- 确保在同一区域配置源环境和目标环境。
- 有关复制环境的常规信息,请转到 “复制环境”。
- 有关复制统一环境的常规信息,请转到 “复制统一环境”。
事务表
为了确保在复制完成后产生的环境仍然正常工作,必须一起清除所有事务表。 由于财务和运营应用程序的高度规范化架构,在复制完成后,即使跳过加入关系中的一个表也会导致用户界面和业务逻辑中的中断行为。
通过使用 X++ 表上的元数据,所有事务表及其相关表都可以作为无事务复制的一部分被截断。 这包括自定义表和来自 ISV 的表,只要表组属性是下列之一:
- 事务 (4)
- WorksheetHeader (5)
- 工作表行 (6)
- 工作表 (9)
- TransactionHeader (10)
- TransactionLine (11)
- 暂存 (12)
开始无事务复制作
在 Power Platform 管理中心内,访问要复制的源环境。 在此处,选择命令栏中的 “复制 ”按钮。 在出现的窗口中,有一个选项“ 无事务复制”,默认情况下设置为 “是”,如下图所示。
如果要将事务复制到目标环境,请将此选项更改为 “否”,如下图所示。
通过 PowerShell 进行无事务复制
加载 PowerShell 控制台并执行以下命令来复制环境。 有关如何安装和使用 PowerShell 模块的更多信息,请参阅面向 Power Platform 管理员的 PowerShell 入门。
#Install the module
Install-Module -Name Microsoft.PowerApps.Administration.PowerShell
# Set variables for your session
$TenantId = "YOUR_TENANT_GUID_FROM_Microsoft Entra ID"
$SPNId = "YOUR_AZURE_APPLICATION_REGISTRATION_CLIENT_ID"
$ClientSecret = "YOUR_AZURE_APPLICATION_CLIENT_SECRET"
$SourceEnvironmentID = "YOUR_SOURCE_ENVIRONMENT_ID_HERE"
$TargetEnvironmentID = "YOUR_TARGET_ENVIRONMENT_ID_HERE"
Write-Host "Creating a session against the Power Platform API"
Add-PowerAppsAccount -Endpoint prod -TenantID $TenantId -ApplicationId $SPNId -ClientSecret $ClientSecret
$copyToRequest = \[pscustomobject\]@{
SourceEnvironmentId = $SourceEnvironmentID
TargetEnvironmentName = "Copied from source"
CopyType = "FullCopy"
SkipAuditData = true
ExecuteAdvancedCopyForFinanceAndOperations = true
}
Copy-PowerAppEnvironment -EnvironmentName $TargetEnvironmentID -CopyToRequestDefinition $copyToRequest
此 PowerShell 命令在源环境和目标环境之间执行完整副本,从而允许复制代码、软件、主数据和引用数据。 然后,在环境可供管理员使用之前,事务表被截断。