Ошибка сборки Visual Studio Team Services - проект базы данных в Azure SQL

У меня есть сборка в Team Services (была Visual Studio Online) с одним шагом MSBuild, который настроен для создания и развертывания проекта БД с использованием профиля публикации. Кажется, мне не удалось это подтвердить. Когда я поставил определение сборки Team Services в очередь, я могу создать проект БД и создать .dacpac. Однако наступает время публикации, и появляется эта ошибка:

C: \ a \ 1 \ s \ Source \ ShopDatabase \ bin \ Output \ MyDatabase.publish.sql (0,0): ошибка Deploy72002: невозможно подключиться к главному или целевому серверу mydb. У вас должен быть пользователь с таким же паролем на главном или целевом сервере mydb.

Мы уверены, что пользователь существует в mydb, а главная база данных - в Azure.

Цель: База данных SQL Azure

Целевая платформа проекта БД: База данных Microsoft Azure SQL

Когда я запускаю профиль публикации прямо из Visual Studio, он работает. Но в определении сборки Team Services этого не происходит. Я пробовал их как аргументы MSbuild:

/ t: Build; Publish /p:SqlPublishProfilePath="myproject.Dev.publish.xml "/ p: Password =" mypassword "

и это:

/ t: Build; Publish /p:SqlPublishProfilePath="myproject.Dev.publish.xml "/ p: TargetConnectionString =" Data Source = myproject.database.windows.net; Persist Security Info = True; User ID = myuser ; Пароль = mypassword; " /p:VisualStudioVersion=14.0 / p: Username = "myuser" / p: Password = "mypassword"

и это:

/ t: Build; Publish /p:SqlPublishProfilePath="myproject.Dev.publish.xml "/ p: TargetConnectionString =" Data Source = myproject.database.windows.net; Persist Security Info = True; User ID = myuser ; Пароль = mypassword; " /p:VisualStudioVersion=14.0 / p: TargetUserName = "myuser" / p: TargetPassword = "mypassword"

Но не пойдет. Пожалуйста, помогите мне T_T уже 6 часов ищет в сети


person JL Dajoyag    schedule 25.04.2016    source источник


Ответы (4)


Это плохое сообщение об ошибке, которое, вероятно, скрывает настоящую проблему: вам нужно открыть брандмауэр для развертывания в базе данных SQL Azure. Он работает из Visual Studio, потому что у вас включен диапазон IP-адресов. Шаги в этого руководства по созданию и развертыванию из VSO, в частности сообщение о развертывании из VSO здесь, должен помочь. в нем конкретно рассказывается, как открыть брандмауэр как часть развертывания.

person Kevin Cunnane    schedule 25.04.2016
comment
Спасибо, Кевин, это объясняет, почему мы можем выполнять развертывание на наших машинах (мы явно добавили наш общедоступный IP-адрес в белый список). На самом деле мы используем этап MSBuild, а не этап развертывания SQL Azure (поэтому мы не можем перейти на брандмауэр AutoDetect). Если бы вы знали, как получить IP-адрес агента, размещенного для сборки VSO, мы можем добавить его в белый список. - person JL Dajoyag; 26.04.2016
comment
Прочитав это, пул размещенных агентов не имеет фиксированного диапазона IP-адресов, поэтому вы не можете занести пул в белый список в брандмауэре. Насколько я понимаю, вам необходимо настроить сервер на Разрешить доступ к службам Azure на портале Azure. - person Witchfinder; 26.04.2016
comment
Изменены планы :) Мы выполнили этап развертывания базы данных Azure SQL и выполнили действия брандмауэра, указанные в ссылке в ответе выше. Работает как шарм! Спасибо за помощь. - person JL Dajoyag; 26.04.2016
comment
@JLDajoyag рад слышать, что это помогло :) Я не уверен, есть ли отдельный встроенный шаг открытого брандмауэра, но было бы здорово связаться с командой VS Online по этому поводу - есть ряд сценариев, где это было бы полезно. - person Kevin Cunnane; 26.04.2016
comment
@JLDajoyag Да, ваше изменение в плане использования развертывания базы данных SQL Azure - лучший способ обеспечения безопасности. Таким образом, вы можете управлять идентификатором пользователя и паролем с помощью переменных и защищать их, а не включать их в виде открытого текста в свой профиль сборки. Что касается шага брандмауэра, есть возможность использовать собственный агент сборки в VSO. Поскольку вы используете свой собственный агент, и IP-адреса известны, настроить брандмауэр легко. - person Eric Kang; 26.04.2016

Очевидный ответ (иногда задним числом!), Но для будущих гуглеров ошибка You must have a user with the same password in master or target server

также происходит, если вы указываете свое развертывание на несуществующий экземпляр. т.е.: Сервер не найден.

person fiat    schedule 15.08.2016

Fwiw создавал сценарий из Visual Studio. Запуск от имени администратора заставил его перестать быть глупым по этому поводу. Какая трата моей жизни сейчас ...

person JohnnyFun    schedule 31.08.2017

Недавно у нас возникла эта проблема, и мы решили ее, удалив @ server-name из конца значения Server Admin Login в разделе SQL DB Details задачи SQL Deploy VSTS. Некоторые онлайн-руководства говорят, что вам это нужно, но похоже, что что-то недавно изменилось, и это больше не требуется.

person Vyrotek    schedule 30.01.2017