Tim*_*met 5 powershell dacpac azure-sql-database azure-devops azure-pipelines
我正在尝试使用 PowerShell 脚本在单个构建过程中部署多个 dacpac。
param(
[string]$publish_profile,
[string]$path_to_snapshots,
[string]$password
)
#Load Microsoft.SqlServer.Dac assembly
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Dac")
#Load Dac profile
$dacProfile = [Microsoft.SqlServer.Dac.DacProfile]::Load($publish_profile)
$dacService = new-object Microsoft.SqlServer.Dac.DacServices($dacProfile.TargetConnectionString)
$files = Get-ChildItem "$path_to_snapshots\*.dacpac"
foreach ($file in $files)
{
$fileName = $file.Name
Try
{
$dp = [Microsoft.SqlServer.Dac.DacPackage]::Load($file.FullName)
$dacService.Deploy($dp, $database, $true)
}
}
Catch
{
Write-Host "$fileName deployment has been failed" -foregroundcolor "red"
throw $_.Exception;
Break
}
}
Run Code Online (Sandbox Code Playgroud)
在我的本地环境中,一切运行良好,但在 Visual Studio 团队服务的构建过程中,我收到错误:
2017-02-24T06:03:09.7955300Z *********.dacpac 部署失败
2017-02-24T06:03:09.9785258Z ##[error]使用“3”参数调用“Deploy”时发生异常(s):“无法部署包。”
在 D:\a\1\s********************\deploydatabase.ps1:104 char:13
+ $dacService.Deploy($dp, $database, $true)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ 类别信息:未指定: (:) [],ParentContainsErrorRecordException
+ ExcellentQualifiedErrorId : DacServicesException2017-02-24T06:03:10.0085256Z ##[错误]进程已完成,退出代码为 1,并且有 1 个错误写入错误流。
首先,您需要添加防火墙规则才能连接到 Azure SQL Server。
代码:
param (
[string]$RestAddress,
[string]$Token,
[string]$RG,
[string]$Server
)
$basicAuth = ("{0}:{1}" -f 'test',$Token)
$basicAuth = [System.Text.Encoding]::UTF8.GetBytes($basicAuth)
$basicAuth = [System.Convert]::ToBase64String($basicAuth)
$headers = @{Authorization=("Basic {0}" -f $basicAuth)}
$result = Invoke-RestMethod -Uri $RestAddress -headers $headers -Method Get
Write-Host $result.value
New-AzureRmSqlServerFirewallRule -ResourceGroupName $RG -ServerName $Server -FirewallRuleName "UnitTestRule" -StartIpAddress "$($result.value)" -EndIpAddress "$($result.value)"
Run Code Online (Sandbox Code Playgroud)
其次,我建议您使用此包中的程序集: Microsoft.SqlServer.Dac。
第三,要获取详细错误,您可以使用以下代码:
Catch
{
Write-Host "$fileName deployment has been failed" -foregroundcolor "red"
$Error | format-list -force
Write-Host $Error[0].Exception.ParentContainsErrorRecordException;
Break
}
Run Code Online (Sandbox Code Playgroud)
另一方面,我建议您可以通过SqlPackage.exe部署 SQL 包。
| 归档时间: |
|
| 查看次数: |
4757 次 |
| 最近记录: |