目前我有一个使用 DACPAC 文件的 Azure Synapse DW 增量部署的 Azure DevOps 发布管道,它工作正常。现在,我希望在 DACPAC 文件上实现一个过滤器,以便在比较后仅包含特定对象,并且只有这些对象才会部署到目标数据库。因为我们通常在开发环境中创建了许多表/存储过程,并且这些表/存储过程无法部署到更高的环境中。我尝试使用 DacFX API 排除所有Delete
,Add
和Changed
使用以下代码片段的操作,然后仅包含需要部署的对象。但是排除对象需要很长时间。注意:这里我正在处理大约 3k 个对象。
$comparisonResult.Differences | %{
if($_.UpdateAction -eq "Delete") {
$comparisonResult.Exclude($_) | Out-Null
}
}
$comparisonResult.Differences | %{
if($_.UpdateAction -eq "Change") {
$comparisonResult.Exclude($_) | Out-Null
}
}
$comparisonResult.Differences | %{
if($_.UpdateAction -eq "Add") {
$comparisonResult.Exclude($_) | Out-Null
}
}
#start including required objects
$objectList = @('schema1.table1'
,'schema1.table2'
,'schema2.view_sample1'
,'schema2.table4')
Write-Host "Including objects from the provided list... "
$comparisonResult.Differences | %{
if($_.SourceObject.Count -gt 0)
{
$schemaName=$_.SourceObject.Name.parts[0]
$objectName = $_.SourceObject.Name.parts[1]
$finalObjectToInclude = $schemaName + "." + $objectName
if( $objectList -contains $finalObjectToInclude)
{
Write-Output "Including Object $($finalObjectToInclude)"
$comparisonResult.Include($_) | Out-Null
}
}
}
需要您的专家建议以使其正常工作,或者也欢迎任何其他建议。
提前致谢。