VSTS构建无法获取dacpac文件(云端托管代理)

时间:2017-11-01 10:23:25

标签: sql azure deployment azure-devops dacpac

我尝试使用VSTS部署到我的数据库中,问题在于我需要获取dacpac文件并将其部署到Azure SQL服务器但其失败的步骤之一: 在该步骤中,我使用" 执行Azure SQL:DacpacTask "这是由Microsoft在VSTS中提供的。 有一个要做的事情被称为" DACPAC文件"并且文档说要像这样使用它:

  

$(agent.releaseDirectory)\ AdventureWorksLT.dacpac

但它给了我以下错误:

  

未找到使用搜索模式部署的文件   d:\一个\ 1 \ S \ $(agent.releaseDirectory)\ AdventureWorksLT.dacpac

所以我做了一个作弊并把下面的值放在其中:

  

d:\一个\ 1 \ S \ AdventureWorksLT.dacpac

它确实有效,但显然,它不会永远工作,因为我需要使用环境变量,例如:

  

$(agent.releaseDirectory)\ AdventureWorksLT.dacpac

有什么建议吗?

2 个答案:

答案 0 :(得分:8)

我遇到了同样的问题。我无法找到详细的文档,但通过实验,这就是我发现的。

我假设您的DACPAC是作为Build Solution任务的一部分创建的。构建完成并创建DACPAC后,它存在于$(System.DefaultWorkingDirectory)目录的子文件夹中。

显然,Azure SQL数据库部署任务无法访问$(System.DefaultWorkingDirectory)文件夹。因此必须将文件复制到可以访问的位置。所以这就是我所做的:

  1. Visual Studio Build任务构建解决方案,包括DACPAC。生成的DACPAC放在$(System.DefaultWorkingDirectory)子文件夹中。
  2. 添加“复制文件”任务作为下一步。 Source Folder属性应为“$(System.DefaultWorkingDirectory)”。 Contents属性应为“** / YourDacPacFilename.dacpac”。 Target文件夹应为$(build.artifactstagingdirectory)。 “** /”告诉VSTS搜索所有子文件夹以查找匹配的文件。
  3. 添加Azure SQL数据库部署任务以部署实际的DACPAC。 DACPAC文件将位于$(build.artifactstagingdirectory)中。

答案 1 :(得分:0)

我遇到了同样的问题,我通过从发行版中删除了旧的工件并再次添加它以获取新工件的正确别名来解决了这个问题。 这就是为什么Azure SQL数据库部署任务说它无权访问$ {System.DefaultWorkingDirectory)文件夹,工件已更改并且必须确保使用的是保存在蔚蓝管道中的新对象的原因。 / p>