Фильтровать файл DACPAC на основе списка входных объектов

#sql-server #dacpac #azure-synapse

#sql-сервер #dacpac #azure-synapse

Вопрос:

В настоящее время у меня есть конвейер выпуска Azure DevOps для инкрементного развертывания Azure Synapse DW с использованием файла DACPAC, и он работает нормально. Теперь я хочу, чтобы в файле DACPAC был реализован фильтр, чтобы после сравнения включать только определенные объекты, и только эти объекты будут развернуты в целевой базе данных. Поскольку у нас обычно есть много таблиц / хранимых процедур, созданных в среде разработки, и они не могут быть развернуты в более высоких средах. Я попробовал DacFx API, чтобы исключить все операции Delete , Add и Changed , используя приведенный ниже фрагмент кода, а затем включить только объекты, которые необходимо развернуть. Но на исключение объектов уходит очень много времени. Примечание: Здесь я имею дело примерно с 3 тыс. объектов.

 $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
            }
        }
}
  

Нужна ваша экспертная консультация, чтобы заставить это работать, или любое другое предложение также приветствуется.

Заранее благодарю.