Публикация базы данных в Azure Gov с использованием размещенного агента сборки

Мы используем решение VSTS PAAS для управления нашим источником, задачами и включаем размещенный агент сборки. Мы можем успешно опубликовать наши службы приложений в Azure Gov, но у нас возникают проблемы при попытке выполнить две задачи в нашем конвейере сборки, и мы подозреваем, что обе они связаны.

Мы используем проекты баз данных для создания dacpac, а задачу сборки SQL Execute Azure - для публикации изменений схемы в наших базах данных. При таргетинге на Azure Gov мы не можем подключиться к серверу с помощью следующего сообщения:

Невозможно подключиться к главному или целевому серверу '{имя_сервера}'. У вас должен быть пользователь с тем же паролем на главном или целевом сервере '{имя_сервера}'.

Я подтвердил, что мои данные БД SQL установлены правильно. Я также попытался установить правила брандмауэра для AutoDetect и IP Range (от 0.0.0.0 до 255.255.255.255), но все еще вижу ту же ошибку. Я все еще подозреваю, что агент сборки VS не может установить правило брандмауэра для клиента Azure Gov, даже если этот шаг настроен на использование типа подключения ARM Azure, который успешно подключается к нашей подписке.

Обновление 12/11/2017: Вот модифицированный файл журнала процесса сборки:

## [раздел] Запуск: выполнение SQL Azure: DacpacTask

Задача: Развертывание базы данных Azure SQL. Описание: Разверните базу данных Azure SQL DB с помощью DACPAC или запустите сценарии с помощью SQLCMD Версия: 1.1.24 Автор: Microsoft Corporation

Помощь: дополнительная информация

[debug] VstsTaskSdk 0.8.2 commit

[debug] Ввод D: \ a_tasks \ SqlAzureDacpacDeployment_ce85a08b-a538-4d2b-8589-1d37a9ab970f \ 1.1.24 \ DeploySqlAzure.ps1.

[debug] INPUT_CONNECTEDSERVICENAMESELECTOR: 'ConnectedServiceNameARM'

[debug] INPUT_TASKNAMESELECTOR: 'DacpacTask'

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

[debug] INPUT_SQLFILE: 'd: \ a \ 1 \ s'

[debug] INPUT_SQLINLINE (пусто)

[debug] INPUT_SERVERNAME: 'tcp:{сервер}.database.usgovcloudapi.net,1433'

[debug] INPUT_DATABASENAME: '{экземпляр}'

[debug] INPUT_CONNECTEDSERVICENAME: '{ARM ID}'

[debug] INPUT_CONNECTEDSERVICENAMEARM: ''

[debug] INPUT_SQLUSERNAME: '{пользователь}'

[debug] INPUT_SQLPASSWORD: '{pwd}'

[debug] INPUT_PUBLISHPROFILE: 'd: \ a \ 1 \ s'

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

[debug] INPUT_SQLADDITIONALARGUMENTS (пусто)

[debug] INPUT_INLINEADDITIONALARGUMENTS (пусто)

[debug] INPUT_IPDETECTIONMETHOD: "Автоопределение"

[debug]INPUT_STARTIPADDRESS (пусто)

[debug] INPUT_ENDIPADDRESS (пусто)

[debug] INPUT_DELETEFIREWALLRULE: 'true'

[debug] Преобразован в bool: True

[отладка] Загрузка модуля по пути 'D:\a_tasks\SqlAzureDacpacDeployment_ce85a08b-a538-4d2b-8589-1d37a9ab970f\1.1.24\ps_modules\VstsAzureRestHelpers_\VstsAzureRestHelpers_.psm1.

[debug] $ OVERRIDING $ global: DebugPreference от "Продолжить" до "SilentlyContinue".

[отладка] Загрузка строк ресурсов из: D: \ a_tasks \ SqlAzureDacpacDeployment_ce85a08b-a538-4d2b-8589-1d37a9ab970f \ 1.1.24 \ ps_modules \ VstsAzureRestHelpers_ / module.json

[отладка] Загружено 7 строк.

[debug] SYSTEM_CULTURE: 'en-US'

[debug] Загрузка строк ресурсов из: D:\a_tasks\SqlAzureDacpacDeployment_ce85a08b-a538-4d2b-8589-1d37a9ab970f\1.1.24\ps_modules\VstsAzureRestHelpers_\Strings\resources.resjson\en-US\resources.resj

[отладка] Загружено 7 строк.

[debug] Экспортирующая функция 'Add-AzureSqlDatabaseServerFirewallRule'.

[debug] Экспортирующая функция 'Remove-AzureSqlDatabaseServerFirewallRule'.

[отладка] Функция экспорта 'Get-AzStorageKeys'.

[отладка] Функция экспорта 'Get-AzRMStorageKeys'.

[отладка] Экспортирующая функция 'Get-AzRmVmCustomScriptExtension'.

[отладка] Экспортирующая функция 'Remove-AzRmVmCustomScriptExtension'.

[отладка] Функция экспорта 'Get-AzStorageAccount'.

[отладка] Экспортная функция 'Get-AzRmStorageAccount'.

[debug] Экспортирующая функция 'Get-AzRmResourceGroup'.

[debug] Экспортирующая функция 'Get-AzureNetworkInterfaceDetails'.

[debug] Экспортирующая функция 'Get-AzurePublicIpAddressDetails'.

[debug] Экспортирующая функция 'Get-AzureLoadBalancersDetails'.

[debug] Экспортирующая функция 'Get-AzureLoadBalancerDetails'.

[debug] Функция экспорта 'Get-AzureRMLoadBalancerFrontendIpConfigDetails'.

[debug] Экспортирующая функция 'Get-AzureRMLoadBalancerInboundNatRuleConfigDetails'.

[debug] Функция импорта 'Add-AzureSqlDatabaseServerFirewallRule'.

[debug] Функция импорта 'Get-AzRmResourceGroup'.

[debug] Функция импорта 'Get-AzRmStorageAccount'.

[debug] Функция импорта 'Get-AzRMStorageKeys'.

[debug] Функция импорта 'Get-AzRmVmCustomScriptExtension'.

[debug] Функция импорта 'Get-AzStorageAccount'.

[debug] Функция импорта 'Get-AzStorageKeys'.

[debug] Функция импорта 'Get-AzureLoadBalancerDetails'.

[debug] Функция импорта 'Get-AzureLoadBalancersDetails'.

[debug] Функция импорта 'Get-AzureNetworkInterfaceDetails'.

[debug] Функция импорта 'Get-AzurePublicIpAddressDetails'.

[debug] Функция импорта 'Get-AzureRMLoadBalancerFrontendIpConfigDetails'.

[debug] Функция импорта 'Get-AzureRMLoadBalancerInboundNatRuleConfigDetails'.

[отладка] Импорт функции "Remove-AzRmVmCustomScriptExtension".

[debug] Функция импорта "Remove-AzureSqlDatabaseServerFirewallRule".

[отладка] Загрузка строк ресурсов из: D: \ a_tasks \ SqlAzureDacpacDeployment_ce85a08b-a538-4d2b-8589-1d37a9ab970f \ 1.1.24 / Task.json

[отладка] Загружено 11 строк.

[debug] SYSTEM_CULTURE: 'en-US'

[debug] Загрузка строк ресурсов из: 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.

[debug] LiteralDirectory: 'LegacyPattern'

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

[debug] Ввод Get-MatchingItems.

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

[debug] ExcludePatterns: ''

[debug] IncludeFiles: 'True'

[debug] IncludeDirectories: 'False'

[debug] Force: 'False'

[debug] Путь: d: \ a \ 1 \ s \ src \ Vics \ bin \ Release \ Database.dacpac

[debug] Выход из Get-MatchingItems.

[отладка] Всего найдено: 1

[debug] Выход из Find-VstsFiles.

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

[debug] Имя сервера: tcp:{сервер}

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

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

[debug] ENDPOINT_DATA_d77b299c-5a4a-41cd-802e-de906dccbff0: '{"subscriptionId": "{subscriptionId}","subscriptionName": "Предложение предприятия Azure для правительства США","azureSpnRoleAssignmentId":","PureS::","azureS::" ","spnObjectId": "","appObjectId": "","creationMode": "Manual","environment": "AzureUSGovernment","environmentUrl": " https://management.usgovcloudapi.net/","galleryUrl ":" https://gallery.usgovcloudapi.net/"," serviceManagementUrl ":" https://management.core.usgovcloudapi.net/"," resourceManagerUrl ":" 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 "," AzureKeyVaultDnsSuff IX ":" vault.usgovclouda...

[debug] Достигнув SqlServer для проверки соединения, запустите sqlcmd.exe -S "tcp:{server}.database.usgovcloudapi.net,1433" -U "{user}" -Q "select getdate ()"

[Отладка]

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

[debug] Версии Sql, установленные на машине factoryvm-az229 как считанные из реестра: 140 130 120 110

[debug] Корневой каталог Sql для конкретной версии 140 для чтения из реестра: C: \ Program Files (x86) \ Microsoft SQL Server \ 140 \

[debug] Корневой каталог Sql для конкретной версии 130 для чтения из реестра: C: \ Program Files \ Microsoft SQL Server \ 130 \

[debug] Корневой каталог Sql для конкретной версии 130 для чтения из реестра: C: \ Program Files (x86) \ Microsoft SQL Server \ 130 \

[debug] Корневой каталог Sql для конкретной версии 120 для чтения из реестра: C: \ Program Files (x86) \ Microsoft SQL Server \ 120 \

[debug] Корневой каталог Sql для конкретной версии 110 для чтения из реестра: C: \ Program Files (x86) \ Microsoft SQL Server \ 110 \

[debug] Dac Framework (установлен с SQL) не найден на машине factoryvm-az229

[debug] Dac Framework, установленный с SQL версии 140, находится по адресу C:\Program Files\Microsoft SQL Server\140\DAC\bin\SqlPackage.exe на машине factoryvm-az229

[debug] Получение последней версии установки Visual Studio 15.

[debug] Вход в Invoke-VstsTool.

[debug] Имя файла: 'D: \ a_tasks \ SqlAzureDacpacDeployment_ce85a08b-a538-4d2b-8589-1d37a9ab970f \ 1.1.24 \ vswhere.exe'

[debug] Аргументы: '-version [15.0,16.0) -последний -формат json'

[debug] RequireExitCodeZero: 'True'

[команда]"D:\a_tasks\SqlAzureDacpacDeployment_ce85a08b-a538-4d2b-8589-1d37a9ab970f\1.1.24\vswhere.exe" -version [15.0,16.0) -latest -формат json

[Отладка] [

[debug] {

[debug] "instanceId": "5fcd044c",

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

[debug] "имя_установки": "VisualStudio / 15.4.5 + 27004.2010",

[debug] "InstallationPath": "C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Enterprise",

[debug] "Установка версии": "15.4.27004.2010",

[debug] "displayName": "Visual Studio Enterprise 2017",

[debug] "description": "Решение Microsoft DevOps для повышения производительности и координации между командами любого размера",

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

[debug] "channelId": "VisualStudio.15.Release",

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

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

[debug] "releaseNotes": " https://go.microsoft.com/fwlink/?LinkId=660692",

[debug] "thirdPartyNotices": " https://go.microsoft.com/fwlink/?LinkId=660708"

[debug]}

[Отладка]]

[debug] Код выхода: 0

[debug] Выход из Invoke-VstsTool.

[debug] Dac Framework, установленный с Visual Studio, находится по адресу C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\140\SqlPackage.exe на фабрике компьютеров vm-az229

[debug] Выполнение SQLPackage.exe

[debug] Выполнение: "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" / Действие: Опубликовать /TargetServerName:"tcp:ndomserver‹.database.usgovcloudapi.net,1433" / TargetDatabaseName: "{instance}" / TargetUser: " {пользователь}" /TargetPassword:"********" /p:BlockOnPossibleDataLoss=False /p:AllowIncompatiblePlatform=True /TargetTimeout:120

Публикация в базе данных "{экземпляр}" на сервере "tcp:{сервер}.database.usgovcloudapi.net,1433". Инициализация развертывания (Пуск) Инициализация развертывания (Сбой)

[debug] Ошибка записи:

[debug] Execute-Command: *** Не удалось развернуть пакет.

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

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

[отладка]+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~

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

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

[Отладка]

[debug] Трассировка стека скриптов:

[debug] в Execute-Command, D:\a_tasks\SqlAzureDacpacDeployment_ce85a08b-a538-4d2b-8589-1d37a9ab970f\1.1.24\Utility.ps1: строка 235

[debug] at, D: \ a_tasks \ SqlAzureDacpacDeployment_ce85a08b-a538-4d2b-8589-1d37a9ab970f \ 1.1.24 \ DeploySqlAzure.ps1: строка 178

[debug] at,: строка 1

[debug] at,: строка 22

[debug] at,: строка 18

[debug] at,: строка 1

[Отладка] Исключение:

[debug] Microsoft.PowerShell.Commands.WriteErrorException: *** Не удалось развернуть пакет.

[ошибка]*** Не удалось развернуть пакет.

[отладка] Обработано: ##vso[task.logissue type=error]*** Не удалось развернуть пакет.

[debug] Ошибка записи:

[debug] Execute-Command: невозможно подключиться к главному или целевому серверу '{instance}'. У вас должен быть пользователь с тем же паролем на главном или целевом сервере '{instance}'.

[Отладка]

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

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

[отладка]+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~

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

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

[Отладка]

[debug] Трассировка стека скриптов:

[debug] в Execute-Command, D:\a_tasks\SqlAzureDacpacDeployment_ce85a08b-a538-4d2b-8589-1d37a9ab970f\1.1.24\Utility.ps1: строка 235

[debug] at, D: \ a_tasks \ SqlAzureDacpacDeployment_ce85a08b-a538-4d2b-8589-1d37a9ab970f \ 1.1.24 \ DeploySqlAzure.ps1: строка 178

[debug] at,: строка 1

[debug] at,: строка 22

[debug] at,: строка 18

[debug] at,: строка 1

[Отладка] Исключение:

[debug] Microsoft.PowerShell.Commands.WriteErrorException: невозможно подключиться к главному или целевому серверу "{сервер}". У вас должен быть пользователь с тем же паролем на главном или целевом сервере '{instance}'.

[Отладка]

[ошибка] Невозможно подключиться к главному или целевому серверу '{instance}'. У вас должен быть пользователь с тем же паролем на главном или целевом сервере '{instance}'.

[отладка] Обработано: ## vso [task.logissue type = error] Невозможно подключиться к главному или целевому серверу '{instance}'. У вас должен быть пользователь с тем же паролем на главном или целевом сервере '{instance}'.% 0D% 0A

[debug] Правило брандмауэра не было добавлено

[debug] Поймано исключение из скрипта задачи.

[debug] Ошибка записи:

[debug] D: \ a_tasks \ SqlAzureDacpacDeployment_ce85a08b-a538-4d2b-8589-1d37a9ab970f \ 1.1.24 \ DeploySqlAzure.ps1: сбой задачи Azure SQL Dacpac.

[debug] В строке: 1 символ: 1

[отладка]+. 'd: \ a_tasks \ SqlAzureDacpacDeployment_ce85a08b-a538-4d2b-8589-1d37a...

[отладка]+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~

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

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

[Отладка]

[debug] Трассировка стека скриптов:

[debug] at, D: \ a_tasks \ SqlAzureDacpacDeployment_ce85a08b-a538-4d2b-8589-1d37a9ab970f \ 1.1.24 \ DeploySqlAzure.ps1: строка 234

[debug] at,: строка 1

[debug] at,: строка 22

[debug] at,: строка 18

[debug] at,: строка 1

[Отладка] Исключение:

[debug] Microsoft.PowerShell.Commands.WriteErrorException: сбой задачи Azure SQL Dacpac.

[ошибка] Не удалось выполнить задачу Azure SQL Dacpac.

[отладка] Обработано: ## vso [task.logissue type = error] Задача Azure SQL Dacpac не выполнена.

[отладка] Обработано: ## vso [task.complete result = Failed]

[раздел] Окончание: выполнение SQL Azure: DacpacTask

Вторая, возможно связанная с этим проблема заключается в попытке запустить наши интеграционные тесты, которые обращаются к этой базе данных. Есть ли альтернатива созданию сценария powershell для подключения к правильному арендатору и выполнения New-AzureSqlDatabaseServerFirewallRule - запустить тесты - Remove-AzureSqlDatabaseServerFirewallRule?

1 ответ

Можете ли вы вручную выполнить команду, сгенерированную журналами отладки выше, для развертывания из консоли? это удается?

Вы можете попробовать добавить правило брандмауэра на портале Azure и проверить, работает ли оно у вас?

Другие вопросы по тегам