如何从Azure上的TeamCity连接到azure SQL以进行发布

时间:2015-11-25 09:10:16

标签: azure teamcity azure-sql-database publish azure-virtual-machine

我正在学习如何配置TeamCity。 我的TeamCity在Azure VM上运行。我的SQL DB在Azure SQL上。 我有web项目和SQL项目的解决方案。我在SQL项目中创建了发布配置,以便发布到Azure SQL。从我的PC上的Visual Studio,我可以使用此发布配置将数据库项目发布到Azure SQL。 从Azure VM上的Teamcity,我可以将Web项目从解决方案发布到我的Azure Web App。但是当我尝试从TeamCity将SQL项目发布到Azure SQL时,我收到以下错误:

*** Could not deploy package.
Unable to connect to target server.
Process exited with code 1
Step Command Line failed

我的Azure VM的当前IP是在Azure SQL防火墙配置中设置的。

命令行构建步骤如下:

"<Path to sqlpackage.exe>\sqlpackage.exe" 
/Action:Publish 
/SourceFile:<path to generated dacpac in previous build step>\<db proj name>.dacpac 
/Profile:<path to publish config>\azureSql.publish.xml

更新 以下是发布配置的内容:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <IncludeCompositeObjects>True</IncludeCompositeObjects>
    <TargetDatabaseName>MyDbName</TargetDatabaseName>
    <DeployScriptFileName>MyDbName.Database.sql</DeployScriptFileName>
    <TargetConnectionString>Data Source=tcp:<myuser>.database.windows.net,1433;Persist Security Info=True;User ID=<user name>;Pooling=False</TargetConnectionString>
    <ScriptDatabaseOptions>True</ScriptDatabaseOptions>
    <BlockOnPossibleDataLoss>False</BlockOnPossibleDataLoss>
    <ProfileVersionNumber>1</ProfileVersionNumber>
  </PropertyGroup>
</Project>

2 个答案:

答案 0 :(得分:2)

由于大量原因,您可能会遇到此错误。你能帮我看看这个:

  1. 您可以从Azure VM连接到SQL Azure DB(使用命令行工具,管理工作室等)。
  2. 您正确配置了部署脚本。尝试从本地计算机运行相同的命令。
  3. 通常,如果需要从Azure DC连接到SQL Azure,则只需允许“azure services”访问您的数据库。也请检查一下。

答案 1 :(得分:2)

我的猜测按相关性排序:

  1. 防火墙(TC和Azure Sql服务器)
  2. 连接信息:
    • myuser .database.windows.net应该是dbname而不是
    • 您需要告诉sqlproj keep password as part of config
      • 最好将密码保存在源代码之外。从安全存储中读取它作为集成服务器构建过程的一部分,并参考sqlpackage docs以了解如何指定目标连接字符串。
  3. 如果上述项目无法使用 / Quiet:False 选项获取有关失败的更多详细信息。