1

我们正在使用托管的 VSTS PAAS 解决方案来管理我们的源、任务,并且正在合并托管的构建代理。我们能够成功地将我们的应用服务发布到 Azure Gov,但是在尝试完成我们的构建管道中的两个任务时遇到了问题,并且怀疑两者都是相关的。

我们使用数据库项目来构建 dacpac,并使用执行 Azure SQL 构建任务将架构更改发布到我们的数据库。以 Azure Gov 为目标时,我们无法连接到服务器并显示以下消息:

无法连接到主服务器或目标服务器“{servername}”。您必须在主服务器或目标服务器“{servername}”中有一个密码相同的用户。

我已确认我的 SQL DB 详细信息设置正确。我还尝试将防火墙规则设置为 AutoDetect 和 IP 范围(0.0.0.0 - 255.255.255.255),但仍然看到相同的错误。我仍然怀疑 VS 构建代理无法为 azure gov 租户设置防火墙规则,即使该步骤配置为使用成功连接到我们订阅的 ARM Azure 连接类型。

2017 年 12 月 11 日更新:这是构建过程中修改后的日志文件:

##[section]开始:执行 Azure SQL:DacpacTask

任务:Azure SQL 数据库部署说明:使用 DACPAC 部署 Azure SQL DB 或使用 SQLCMD 运行脚本版本:1.1.24 作者:Microsoft Corporation

帮助:更多信息

[调试]VstsTaskSdk 0.8.2 提交

[debug]进入D:\a_tasks\SqlAzureDacpacDeployment_ce85a08b-a538-4d2b-8589-1d37a9ab970f\1.1.24\DeploySqlAzure.ps1。

[调试]INPUT_CONNECTEDSERVICENAMESELECTOR: 'ConnectedServiceNameARM'

[调试]INPUT_TASKNAMESELECTOR:'DacpacTask'

[调试]INPUT_DACPACFILE: 'd:\a\1\s\src\Vics\bin\Release\Database.dacpac'

[调试]INPUT_SQLFILE: 'd:\a\1\s'

[调试]INPUT_SQLINLINE(空)

[调试]INPUT_SERVERNAME: 'tcp:{server}.database.usgovcloudapi.net,1433'

[调试]INPUT_DATABASENAME:'{instance}'

[调试]INPUT_CONNECTEDSERVICENAME:“{ARM ID}”

[调试]INPUT_CONNECTEDSERVICENAMEARM:''

[调试]INPUT_SQLUSERNAME:'{user}'

[调试]INPUT_SQLPASSWORD:'{pwd}'

[调试]INPUT_PUBLISHPROFILE: 'd:\a\1\s'

[调试]INPUT_ADDITIONALARGUMENTS: '/p:BlockOnPossibleDataLoss=False /p:AllowIncompatiblePlatform=True'

[调试]INPUT_SQLADDITIONALARGUMENTS(空)

[调试]INPUT_INLINEADDITIONALARGUMENTS(空)

[调试]INPUT_IPDETECTIONMETHOD:“自动检测”

[调试]INPUT_STARTIPADDRESS(空)

[调试]INPUT_ENDIPADDRESS(空)

[调试]INPUT_DELETEFIREWALLRULE:'真'

[调试] 转换为布尔值:真

[调试]从路径“D:\a_tasks\SqlAzureDacpacDeployment_ce85a08b-a538-4d2b-8589-1d37a9ab970f\1.1.24\ps_modules\VstsAzureRestHelpers_\VstsAzureRestHelpers_.psm1”加载模块。

[debug]$OVERRIDING $global:DebugPreference 从 'Continue' 到 'SilentlyContinue'。

[调试]从以下位置加载资源字符串:D:\a_tasks\SqlAzureDacpacDeployment_ce85a08b-a538-4d2b-8589-1d37a9ab970f\1.1.24\ps_modules\VstsAzureRestHelpers_/module.json

[调试]加载了 7 个字符串。

[debug]SYSTEM_CULTURE: 'en-US'

[调试]从以下位置加载资源字符串:D:\a_tasks\SqlAzureDacpacDeployment_ce85a08b-a538-4d2b-8589-1d37a9ab970f\1.1.24\ps_modules\VstsAzureRestHelpers_\Strings\resources.resjson\en-US\resources.resjson

[调试]加载了 7 个字符串。

[调试] 导出函数“Add-AzureSqlDatabaseServerFirewallRule”。

[调试]导出函数“删除-AzureSqlDatabaseServerFirewallRule”。

[调试]导出函数“Get-AzStorageKeys”。

[调试]导出函数“Get-AzRMStorageKeys”。

[调试]导出函数“Get-AzRmVmCustomScriptExtension”。

[调试]导出函数“Remove-AzRmVmCustomScriptExtension”。

[调试]导出函数“Get-AzStorageAccount”。

[调试]导出函数“Get-AzRmStorageAccount”。

[调试]导出函数“Get-AzRmResourceGroup”。

[调试]导出函数“Get-AzureNetworkInterfaceDetails”。

[调试] 导出函数“Get-AzurePublicIpAddressDetails”。

[调试] 导出函数 'Get-AzureLoadBalancersDetails'。

[调试]导出函数“Get-AzureLoadBalancerDetails”。

[调试] 导出函数“Get-AzureRMLoadBalancerFrontendIpConfigDetails”。

[调试]导出函数“Get-AzureRMLoadBalancerInboundNatRuleConfigDetails”。

[调试] 导入函数“Add-AzureSqlDatabaseServerFirewallRule”。

[调试] 导入函数“Get-AzRmResourceGroup”。

[调试] 导入函数“Get-AzRmStorageAccount”。

[调试]导入函数“Get-AzRMStorageKeys”。

[调试] 导入函数“Get-AzRmVmCustomScriptExtension”。

[调试] 导入函数“Get-AzStorageAccount”。

[调试] 导入函数“Get-AzStorageKeys”。

[调试] 导入函数“Get-AzureLoadBalancerDetails”。

[调试] 导入函数“Get-AzureLoadBalancersDetails”。

[调试] 导入函数“Get-AzureNetworkInterfaceDetails”。

[调试] 导入函数 'Get-AzurePublicIpAddressDetails'。

[调试] 导入函数“Get-AzureRMLoadBalancerFrontendIpConfigDetails”。

[调试] 导入函数“Get-AzureRMLoadBalancerInboundNatRuleConfigDetails”。

[调试] 导入函数“Remove-AzRmVmCustomScriptExtension”。

[调试] 导入函数“Remove-AzureSqlDatabaseServerFirewallRule”。

[调试]从:D:\a_tasks\SqlAzureDacpacDeployment_ce85a08b-a538-4d2b-8589-1d37a9ab970f\1.1.24/Task.json 加载资源字符串

[调试]加载了 11 个字符串。

[debug]SYSTEM_CULTURE: 'en-US'

[调试]从以下位置加载资源字符串:D:\a_tasks\SqlAzureDacpacDeployment_ce85a08b-a538-4d2b-8589-1d37a9ab970f\1.1.24\Strings\resources.resjson\en-US\resources.resjson

[调试]加载了 11 个字符串。

[debug]FilePath= Find-VstsFiles LegacyPattern d:\a\1\s\src\Vics\bin\Release\Database.dacpac

[debug]进入 Find-VstsFiles。

[调试] LiteralDirectory:'LegacyPattern'

[调试] LegacyPattern: 'd:\a\1\s\src\Vics\bin\Release\Database.dacpac'

[调试]输入 Get-MatchingItems。

[调试] IncludePatterns: 'd:\a\1\s\src\Vics\bin\Release\Database.dacpac'

[调试] 排除模式:''

[调试] 包含文件:“真”

[调试] 包含目录:'False'

[调试] 强制:'假'

[调试]路径:d:\a\1\s\src\Vics\bin\Release\Database.dacpac

[调试]离开 Get-MatchingItems。

[调试]找到的总数:1

[调试]离开 Find-VstsFiles。

packageFile= d:\a\1\s\src\Vics\bin\Release\Database.dacpac

[调试]服务器友好名称是 tcp:{server}

[调试]ENDPOINT_URL_d77b299c-5a4a-41cd-802e-de906dccbff0:' https ://management.usgovcloudapi.net/ '

[调试]ENDPOINT_AUTH_d77b299c-5a4a-41cd-802e-de906dccbff0: '********'

[调试]ENDPOINT_DATA_d77b299c-5a4a-41cd-802e-de906dccbff0: '{"subscriptionId":"{subscriptionId}","subscriptionName":"US Government Azure Enterprise Offer","azureSpnRoleAssignmentId":"","azureSpnPermissions":"" ,"spnObjectId":"","appObjectId":"","creationMode":"Manual","environment":"AzureUSGovernment","environmentUrl":" https://management.usgovcloudapi.net/ ","galleryUrl ":" https://gallery.usgovcloudapi.net/ ","serviceManagementUrl":" https://management.core.usgovcloudapi.net/ ","re​​sourceManagerUrl ":" https://management.usgovcloudapi.net/ ","activeDirectoryAuthority":" https://login-us.microsoftonline.com/ ","environmentAuthorityUrl":" https://login-us.microsoftonline.com/ ","graphUrl":"https://graph.windows.net/ ","managementPortalUrl":" https://manage.windowsazure.us/ ","armManagementPortalUrl":" https://portal.azure.us ","activeDirectoryServiceEndpointResourceId":" https://management.core.usgovcloudapi.net/ ","sqlDatabaseDnsSuffix":".database.usgovcloudapi.net","AzureKeyVaultDnsSuffix":"vault.usgovclouda...

[debug]运行sqlcmd.exe -S "tcp:{server}.database.usgovcloudapi.net,1433" -U "{user}" -Q "select getdate()" 到达SqlServer检查连接

[调试]

[调试]sqlPackageArguments = /SourceFile:"d:\a\1\s\src\Vics\bin\Release\Database.dacpac" /Action:Publish /TargetServerName:"tcp:{server}.database.usgovcloudapi.net, 1433" /TargetDatabaseName:"{instance}" /TargetUser:"{user}" /TargetPassword:"********" /p:BlockOnPossibleDataLoss=False /p:AllowIncompatiblePlatform=True /TargetTimeout:120

[调试]从注册表读取的机器 factoryvm-az229 上安装的 Sql 版本:140 130 120 110

[调试]从注册表读取的版本 140 的 Sql 版本特定根目录:C:\Program Files (x86)\Microsoft SQL Server\140\

[调试]从注册表读取的版本 130 的 Sql 版本特定根目录:C:\Program Files\Microsoft SQL Server\130\

[调试]从注册表读取的版本 130 的 Sql 版本特定根目录:C:\Program Files (x86)\Microsoft SQL Server\130\

[调试]从注册表读取的版本 120 的 Sql 版本特定根目录:C:\Program Files (x86)\Microsoft SQL Server\120\

[调试]从注册表读取的版本 110 的 Sql 版本特定根目录:C:\Program Files (x86)\Microsoft SQL Server\110\

[调试]在机器 factoryvm-az229 上找不到 Dac 框架(随 SQL 安装)

[调试] Dac 框架安装在 C:\Program Files\Microsoft SQL Server\140\DAC\bin\SqlPackage.exe 机器 factoryvm-az229 上的 SQL 版本 140

[调试]获取最新的 Visual Studio 15 安装实例。

[debug]进入Invoke-VstsTool。

[调试] 文件名:'D:\a_tasks\SqlAzureDacpacDeployment_ce85a08b-a538-4d2b-8589-1d37a9ab970f\1.1.24\vswhere.exe'

[调试] 参数:'-version [15.0,16.0) -latest -format json'

[调试] RequireExitCodeZero: 'True'

[命令]“D:\a_tasks\SqlAzureDacpacDeployment_ce85a08b-a538-4d2b-8589-1d37a9ab970f\1.1.24\vswhere.exe”-version [15.0,16.0) -latest -format json

[调试][

[调试] {

[调试] "instanceId": "5fcd044c",

[调试] "installDate": "2017-12-01T18:36:43Z",

[调试] "installationName": "VisualStudio/15.4.5+27004.2010",

[调试] "installationPath": "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise",

[调试]“安装版本”:“15.4.27004.2010”,

[调试] "displayName": "Visual Studio Enterprise 2017",

[debug] “description”:“Microsoft DevOps 解决方案,用于跨任何规模的团队进行生产力和协调”,

[调试] "enginePath": "C:\Program Files (x86)\Microsoft Visual Studio\Installer\resources\app\ServiceHub\Services\Microsoft.VisualStudio.Setup.Service",

[调试] "channelId": "VisualStudio.15.Release",

[调试] "channelPath": "C:\Users\packer\AppData\Local\Microsoft\VisualStudio\Packages\_Channels\4CB340F5\catalog.json",

[调试] "channelUri": " https://aka.ms/vs/15/release/channel ",

[调试] "releaseNotes": " https://go.microsoft.com/fwlink/?LinkId=660692#15.4.5 ",

[调试]“thirdPartyNotices”:“ https://go.microsoft.com/fwlink/?LinkId=660708

[调试] }

[调试]]

[调试]退出代码:0

[调试]离开 Invoke-VstsTool。

[调试] Dac Framework 与 Visual Studio 一起安装在机器 factoryvm-az229 上的 C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\140\SqlPackage.exe 中

[debug]执行SQLPackage.exe

[调试]执行:"C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\140\SqlPackage.exe" /SourceFile:"d:\a\ 1\s\src\Vics\bin\Release\Database.dacpac" /Action:Publish /TargetServerName:"tcp:{server}.database.usgovcloudapi.net,1433" /TargetDatabaseName:"{instance}" /TargetUser:" {user}" /TargetPassword:"********" /p:BlockOnPossibleDataLoss=False /p:AllowIncompatiblePlatform=True /TargetTimeout:120

发布到服务器“tcp:{server}.database.usgovcloudapi.net,1433”上的数据库“{instance}”。初始化部署(开始) 初始化部署(失败)

[调试]错误记录:

[debug]Execute-Command : *** 无法部署包。

[调试]在 D:\a_tasks\SqlAzureDacpacDeployment_ce85a08b-a538-4d2b-8589-1d37a9ab970f\1.1.24\DeploySqlAzure.ps1:178 char:9

[调试]+ Execute-Command -FileName $SqlPackagePath -Arguments $scriptA ...

[调试]+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~

[调试] + CategoryInfo : NotSpecified: (:) [Write-Error], WriteErrorException

[调试] + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,Execute-Command

[调试]

[调试]脚本堆栈跟踪:

[调试]在执行命令处,D:\a_tasks\SqlAzureDacpacDeployment_ce85a08b-a538-4d2b-8589-1d37a9ab970f\1.1.24\Utility.ps1:第 235 行

[调试]在 D:\a_tasks\SqlAzureDacpacDeployment_ce85a08b-a538-4d2b-8589-1d37a9ab970f\1.1.24\DeploySqlAzure.ps1:第 178 行

[调试]在 , : 第 1 行

[调试]在,:第 22 行

[调试]在,:第 18 行

[调试]在 , : 第 1 行

[调试]异常:

[调试]Microsoft.PowerShell.Commands.WriteErrorException:*** 无法部署包。

[错误]*** 无法部署包。

[调试]已处理:##vso[task.logissue type=error]*** 无法部署包。

[调试]错误记录:

[debug]Execute-Command:无法连接到主服务器或目标服务器“{instance}”。您必须在主服务器或目标服务器“{instance}”中拥有具有相同密码的用户。

[调试]

[调试]在 D:\a_tasks\SqlAzureDacpacDeployment_ce85a08b-a538-4d2b-8589-1d37a9ab970f\1.1.24\DeploySqlAzure.ps1:178 char:9

[调试]+ Execute-Command -FileName $SqlPackagePath -Arguments $scriptA ...

[调试]+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~

[调试] + CategoryInfo : NotSpecified: (:) [Write-Error], WriteErrorException

[调试] + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,Execute-Command

[调试]

[调试]脚本堆栈跟踪:

[调试]在执行命令处,D:\a_tasks\SqlAzureDacpacDeployment_ce85a08b-a538-4d2b-8589-1d37a9ab970f\1.1.24\Utility.ps1:第 235 行

[调试]在 D:\a_tasks\SqlAzureDacpacDeployment_ce85a08b-a538-4d2b-8589-1d37a9ab970f\1.1.24\DeploySqlAzure.ps1:第 178 行

[调试]在 , : 第 1 行

[调试]在,:第 22 行

[调试]在,:第 18 行

[调试]在 , : 第 1 行

[调试]异常:

[调试]Microsoft.PowerShell.Commands.WriteErrorException:无法连接到主服务器或目标服务器“{server}”。您必须在主服务器或目标服务器“{instance}”中拥有具有相同密码的用户。

[调试]

[错误]无法连接到主服务器或目标服务器“{instance}”。您必须在主服务器或目标服务器“{instance}”中拥有具有相同密码的用户。

[调试]已处理:##vso[task.logissue type=error]无法连接到主服务器或目标服务器“{instance}”。您在主服务器或目标服务器“{instance}”中必须有一个密码相同的用户。%0D%0A

[debug]没有添加防火墙规则

[调试]从任务脚本中捕获异常。

[调试]错误记录:

[调试]D:\a_tasks\SqlAzureDacpacDeployment_ce85a08b-a538-4d2b-8589-1d37a9ab970f\1.1.24\DeploySqlAzure.ps1:Azure SQL Dacpac 任务失败。

[调试]在 line:1 char:1

[调试]+ . 'd:\a_tasks\SqlAzureDacpacDeployment_ce85a08b-a538-4d2b-8589-1d37a ...

[调试]+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~

[调试] + CategoryInfo : NotSpecified: (:) [Write-Error], WriteErrorException

[调试] + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,DeploySqlAzure.ps1

[调试]

[调试]脚本堆栈跟踪:

[调试]在 D:\a_tasks\SqlAzureDacpacDeployment_ce85a08b-a538-4d2b-8589-1d37a9ab970f\1.1.24\DeploySqlAzure.ps1:第 234 行

[调试]在 , : 第 1 行

[调试]在,:第 22 行

[调试]在,:第 18 行

[调试]在 , : 第 1 行

[调试]异常:

[调试]Microsoft.PowerShell.Commands.WriteErrorException:Azure SQL Dacpac 任务失败。

[错误]Azure SQL Dacpac 任务失败。

[调试]已处理:##vso[task.logissue type=error]Azure SQL Dacpac 任务失败。

[调试]已处理:##vso [task.complete 结果=失败]

[部分]完成:执行 Azure SQL:DacpacTask

第二个可能相关的问题是尝试运行访问该数据库的集成测试。是否有替代方法可以创建一个 powershell 脚本来连接到正确的租户并执行New-AzureSqlDatabaseServerFirewallRule- 运行测试 - Remove-AzureSqlDatabaseServerFirewallRule

4

1 回答 1

0

您可以手动执行上面调试日志生成的命令从控制台部署吗?它成功了吗?

您可以尝试从 Azure 门户添加防火墙规则并检查它是否适合您?

于 2017-12-19T05:18:11.130 回答