add IncludeDacPac parameter and update dac version

This commit is contained in:
Freddy Kristiansen 2022-03-23 07:00:52 +01:00
Родитель a18ea69ed0
Коммит 737725aded
2 изменённых файлов: 43 добавлений и 7 удалений

Просмотреть файл

@ -15,6 +15,8 @@
Omit to export tenant template, specify default to export the default tenant.
.Parameter doNotCheckEntitlements
Include this parameter to avoid checking entitlements. Entitlements are needed if the .bacpac file is to be used for cloud deployments.
.Parameter includeDacPac
Use this parameter to export databases as dacpac
.Parameter commandTimeout
Timeout in seconds for the export command for every database. Default is 1 hour (3600).
.Parameter diagnostics
@ -40,6 +42,7 @@ function Export-BcContainerDatabasesAsBacpac {
[string] $bacpacFolder = "",
[string[]] $tenant = @("default"),
[int] $commandTimeout = 3600,
[switch] $includeDacPac,
[switch] $diagnostics,
[switch] $doNotCheckEntitlements,
[string[]] $additionalArguments = @()
@ -61,7 +64,7 @@ try {
}
$containerBacpacFolder = Get-BcContainerPath -containerName $containerName -path $bacpacFolder -throw
Invoke-ScriptInBcContainer -containerName $containerName -ScriptBlock { Param([PSCredential]$sqlCredential, $bacpacFolder, $tenant, $commandTimeout, $diagnostics, $additionalArguments, $doNotCheckEntitlements)
Invoke-ScriptInBcContainer -containerName $containerName -ScriptBlock { Param([PSCredential]$sqlCredential, $bacpacFolder, $tenant, $commandTimeout, $includeDacPac, $diagnostics, $additionalArguments, $doNotCheckEntitlements)
function InstallPrerequisite {
Param (
@ -90,7 +93,7 @@ try {
{
$sqlpakcageExe = Get-Item "C:\Program Files\Microsoft SQL Server\*\DAC\bin\sqlpackage.exe" | Sort-Object -Property FullName -Descending | Select-Object -First 1
if (!($sqlpakcageExe)) {
InstallPrerequisite -Name "Dac Framework 18.2" -MsiPath "c:\download\DacFramework.msi" -MsiUrl "https://download.microsoft.com/download/9/2/2/9228AAC2-90D1-4F48-B423-AF345296C7DD/EN/x64/DacFramework.msi" | Out-Null
InstallPrerequisite -Name "Dac Framework 19.0" -MsiPath "c:\download\DacFramework.msi" -MsiUrl "https://go.microsoft.com/fwlink/?linkid=2185764" | Out-Null
$sqlpakcageExe = Get-Item "C:\Program Files\Microsoft SQL Server\*\DAC\bin\sqlpackage.exe"
}
$sqlpakcageExe.FullName
@ -305,12 +308,13 @@ try {
[string] $targetFile,
[Parameter(Mandatory=$false)]
[int] $commandTimeout = 3600,
[switch] $includeDacPac,
[switch] $diagnostics,
[Parameter(Mandatory=$false)]
[string[]] $additionalArguments = @()
)
Write-Host "Exporting..."
Write-Host "Exporting as BacPac..."
$arguments = @(
('/Action:Export'),
('/TargetFile:"'+$targetFile+'"'),
@ -336,6 +340,37 @@ try {
}
& $sqlPackageExe $arguments
if ($includeDacPac) {
Write-Host "Extracting as DacPac..."
$arguments = @(
('/Action:Extract'),
('/TargetFile:"'+$targetFile.Replace('.bacpac','.dacpac')+'"'),
('/SourceDatabaseName:"'+$databaseName+'"'),
('/SourceServerName:"'+$databaseServer+'"'),
('/OverwriteFiles:True')
('/p:VerifyExtraction=True')
('/p:ExtractAllTableData=True')
("/p:CommandTimeout=$commandTimeout")
)
if ($diagnostics) {
$arguments += @('/Diagnostics:True')
}
if ($sqlCredential) {
$arguments += @(
('/SourceUser:"'+$sqlCredential.UserName+'"'),
('/SourcePassword:"'+([System.Runtime.InteropServices.Marshal]::PtrToStringAuto([System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($sqlCredential.Password)))+'"')
)
}
if ($additionalArguments) {
$arguments += $additionalArguments
}
& $sqlPackageExe $arguments
}
}
$customConfigFile = Join-Path (Get-Item "C:\Program Files\Microsoft Dynamics NAV\*\Service").FullName "CustomSettings.config"
@ -366,7 +401,7 @@ try {
Remove-WindowsUsers -DatabaseServer $databaseServerInstance -DatabaseName $tempAppDatabaseName -sqlCredential $sqlCredential
Remove-ApplicationRoles -DatabaseServer $databaseServerInstance -DatabaseName $tempAppDatabaseName -sqlCredential $sqlCredential
Remove-NavDatabaseSystemTableData -DatabaseServer $databaseServerInstance -DatabaseName $tempAppDatabaseName -sqlCredential $sqlCredential
Do-Export -DatabaseServer $databaseServerInstance -DatabaseName $tempAppDatabaseName -sqlCredential $sqlCredential -targetFile $appBacpacFileName -commandTimeout $commandTimeout -diagnostics:$diagnostics -additionalArguments $additionalArguments
Do-Export -DatabaseServer $databaseServerInstance -DatabaseName $tempAppDatabaseName -sqlCredential $sqlCredential -targetFile $appBacpacFileName -commandTimeout $commandTimeout -includeDacPac:$includeDacPac -diagnostics:$diagnostics -additionalArguments $additionalArguments
$tenant | ForEach-Object {
$sourceDatabase = $_
@ -383,7 +418,7 @@ try {
Remove-WindowsUsers -DatabaseServer $databaseServerInstance -DatabaseName $tempTenantDatabaseName -sqlCredential $sqlCredential
Remove-ApplicationRoles -DatabaseServer $databaseServerInstance -DatabaseName $tempTenantDatabaseName -sqlCredential $sqlCredential
Remove-NavTenantDatabaseUserData -DatabaseServer $databaseServerInstance -DatabaseName $tempTenantDatabaseName -sqlCredential $sqlCredential
Do-Export -DatabaseServer $databaseServerInstance -DatabaseName $tempTenantDatabaseName -sqlCredential $sqlCredential -targetFile $tenantBacpacFileName -commandTimeout $commandTimeout -diagnostics:$diagnostics -additionalArguments $additionalArguments
Do-Export -DatabaseServer $databaseServerInstance -DatabaseName $tempTenantDatabaseName -sqlCredential $sqlCredential -targetFile $tenantBacpacFileName -commandTimeout $commandTimeout -includeDacPac:$includeDacPac -diagnostics:$diagnostics -additionalArguments $additionalArguments
}
} else {
$tempDatabaseName = "temp$DatabaseName"
@ -396,9 +431,9 @@ try {
Remove-ApplicationRoles -DatabaseServer $databaseServerInstance -DatabaseName $tempDatabaseName -sqlCredential $sqlCredential
Remove-NavDatabaseSystemTableData -DatabaseServer $databaseServerInstance -DatabaseName $tempDatabaseName -sqlCredential $sqlCredential
Remove-NavTenantDatabaseUserData -DatabaseServer $databaseServerInstance -DatabaseName $tempDatabaseName -sqlCredential $sqlCredential
Do-Export -DatabaseServer $databaseServerInstance -DatabaseName $tempDatabaseName -sqlCredential $sqlCredential -targetFile $bacpacFileName -commandTimeout $commandTimeout -diagnostics:$diagnostics -additionalArguments $additionalArguments
Do-Export -DatabaseServer $databaseServerInstance -DatabaseName $tempDatabaseName -sqlCredential $sqlCredential -targetFile $bacpacFileName -commandTimeout $commandTimeout -includeDacPac:$includeDacPac -diagnostics:$diagnostics -additionalArguments $additionalArguments
}
} -ArgumentList $sqlCredential, $containerBacpacFolder, $tenant, $commandTimeout, $diagnostics, $additionalArguments, $doNotCheckEntitlements
} -ArgumentList $sqlCredential, $containerBacpacFolder, $tenant, $commandTimeout, $includeDacPac, $diagnostics, $additionalArguments, $doNotCheckEntitlements
}
catch {
TrackException -telemetryScope $telemetryScope -errorRecord $_

Просмотреть файл

@ -3,6 +3,7 @@ Issue #2349 Run-AlCops/Extract-AppFileToFolder fail if runtime is >=8.0 and no R
Stop treating AL1026 warning as error by default
Support for application dependency in Sort-AppFoldersByDependencies
Issue #2360 -isolation hyperv isn't always used when specified and building a new image
Add -includeDacPac parameter to Export-BcContainerDatabasesAsBacpac
3.0.3
Issue #2303 Get-BestGenericImageName sometimes returns an image which is newer than the host OS