【问题标题】:Visual Studio Team Services Build Failed - Database Project to Azure SQLVisual Studio Team Services 构建失败 - 数据库项目到 Azure SQL
【发布时间】:2016-08-18 16:02:22
【问题描述】:

我在 Team Services(之前是 Visual Studio Online)中有一个构建,其中一个 MSBuild 步骤配置为使用发布配置文件构建和部署数据库项目。我似乎无法成功验证它。当我对 Team Services 构建定义进行排队时,我能够构建 DB 项目并生成 .dacpac。但是,到了发布时间,这个错误就来了:

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

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

目标:Azure SQL 数据库

数据库项目目标平台: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=我的用户;密码=我的密码;" /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=我的用户;密码=我的密码;" /p:VisualStudioVersion=14.0 /p:TargetUserName="myuser" /p:TargetPassword="mypassword"

但不会工作。请帮我T_T已经在网上搜索了6个小时了

【问题讨论】:

    标签: azure msbuild azure-sql-database azure-devops azure-pipelines


    【解决方案1】:

    Fwiw,正在从 Visual Studio 生成脚本。以管理员身份运行使其不再对此感到困惑。刚才真是浪费了我的生命……

    【讨论】:

      【解决方案2】:

      我们最近遇到了这个问题,我们通过从 SQL 部署 VSTS 任务的 SQL DB 详细信息部分中的 Server Admin Login 值末尾删除 @server-name 解决了这个问题。一些在线指南说你需要这个,但它似乎最近发生了一些变化,不再需要它。

      【讨论】:

        【解决方案3】:

        一个明显的答案(有时事后看来!)但对于未来的谷歌人来说,错误You must have a user with the same password in master or target server

        如果您将部署指向不存在的实例,也会发生这种情况。 即:找不到服务器。

        【讨论】:

          【解决方案4】:

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

          【讨论】:

          • 感谢 Kevin,这解释了为什么我们可以在我们的机器中进行部署(我们明确地将我们的公共 IP 添加到白名单中)。我们实际上是在使用 MSBuild 步骤,而不是部署 SQL Azure 步骤(因此无法通过 AutoDetect 防火墙)路由。您知道如何获取 VSO 构建托管代理的 IP 地址,然后我们可以将其添加为白名单。
          • 通过对此进行一些阅读,托管代理池没有固定的 IP 地址范围,因此您无法将池列入防火墙中的白名单。我的理解是需要在 Azure 门户中将服务器设置为“允许访问 Azure 服务”。
          • 已更改计划 :) 我们执行了“Azure SQL DB 部署”步骤,并遵循上述答案链接中建议的防火墙步骤。奇迹般有效!感谢您的帮助。
          • @JLDajoyag 很高兴听到它有帮助 :) 我不确定是否有单独的内置“开放防火墙”步骤,但最好联系 VS Online 团队讨论这个问题 - 有一系列有用的场景。
          • @JLDajoyag 是的,您更改使用 Azure SQL DB 部署的计划是更好的安全途径。这样,您可以使用变量管理用户 ID 和密码并对其进行保护,而不是将它们以明文形式包含在构建配置文件中。关于防火墙步骤,可以选择在 VSO 中引入您自己的构建代理。由于您使用自己的代理机器并且 IP 是已知的,因此很容易配置防火墙。
          猜你喜欢
          • 1970-01-01
          • 2017-11-26
          • 1970-01-01
          • 2015-04-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-12-14
          相关资源
          最近更新 更多