Публикация базы данных в 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 и проверить, работает ли оно у вас?