2016-04-25 82 views
5

我有一个Team Services(Visual Studio Online)构建,其中一个MSBuild步骤使用发布配置文件配置为构建和部署数据库项目。我似乎无法成功验证它。当我排队Team Services构建定义时,我能够构建数据库项目并生成.dacpac。但是,来自发布时间和此错误来:Visual Studio Team Services构建失败 - 将数据库项目设置为Azure SQL

C:\ a \ 1 \ s \ Source \ ShopDatabase \ bin \ Output \ MyDatabase.publish.sql(0,0):错误Deploy72002:无法连接到主服务器或目标服务器'mydb'。您必须在主服务器或目标服务器'mydb'中拥有相同密码的用户。

我们确定用户存在于mydb和Azure中的主数据库中。

目标:天蓝色的SQL数据库

DB项目目标平台:微软Azure SQL数据库

当我直接从Visual Studio运行发布配置文件,它的工作原理。但是在Team Services构建定义中,它并没有。我尝试了这些作为MSBUILD参数:

/吨:构建;发布/p:SqlPublishProfilePath="myproject.Dev.publish.xml”/P:密码= “输入mypassword”

和此:

/t:Build;发布/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:用户名= “为myuser”/ P:密码= “输入mypassword”

和此:

/吨:构建;发布/p:SqlPublishProfilePath="myproject.Dev .publish.xml“/ p:TargetConnectionString =”Data Source = myproject.database.windows.net; Persist Security Info = True; User ID = myuser; Password = mypassword;“ /p:VisualStudioVersion=14.0/p:TargetUserName =“myuser”/ p:TargetPassword =“mypassword”

但是不行。请帮助我T_T已经在网上搜索了6个小时了

回答

7

这是一个糟糕的错误消息,可能会掩盖真正的问题:您需要打开防火墙以部署到Azure SQL数据库。它是从Visual Studio开始工作的,因为您的IP范围已启用。 this guide to building & deploying from VSO中的步骤,特别是deploying from VSO here,的帖子应该有所帮助。它特别介绍了如何在部署过程中打开防火墙。

+0

感谢凯文,这解释了为什么我们可以部署在我们的机器(我们明确地将我们的公共IP添加到白名单)。我们实际上是使用MSBuild步骤,而不是部署SQL Azure步骤(因此无法使用AutoDetect防火墙)路由。您是否知道如何获取VSO构建托管代理的IP地址,然后我们可以将其添加为白名单。 –

+0

通过对此进行读取,Hosted代理池没有固定的IP地址范围,因此您无法将防火墙中的池列入白名单。我的理解是,您需要在Azure门户中将服务器设置为“允许访问Azure服务”。 – Witchfinder

+0

已更改计划:)我们执行了“Azure SQL数据库部署”步骤,并按照上述答案中建议的防火墙步骤进行操作。奇迹般有效!谢谢您的帮助。 –

3

一个明显的答案(有时在事后!),但未来的Google错误You must have a user with the same password in master or target server

也正好,如果你指向你部署到不存在的实例。 ie:找不到服务器。

0

我们最近遇到了这个问题,我们通过从SQL Deploy VSTS任务的SQL数据库详细信息部分中的服务器管理员登录值末尾删除了@服务器名称来解决此问题。一些网上的指南说你需要这个,但最近看起来有些变化,不再需要它。

1

Fwiw,从视觉工作室生成一个脚本。以管理员身份运行使其停止对此进行冲洗。多么浪费我的生活...