gpt4 book ai didi

azure-devops - 如何在 Azure DevOps 的 Script.PostDeployment.sql 中引用 sql 脚本(而非过程)?

转载 作者:行者123 更新时间:2023-12-02 08:16:41 26 4
gpt4 key购买 nike

如何获取 Azure DevOps 构建中脚本(而非过程)的路径?

我正在尝试获取要在 Visual Studio 数据库项目部署后中使用的解决方案或项目文件的路径。

本地工作

在 Visual Studio 数据库项目的 Script.PostDeployment.sql 文件中,我有以下代码

SELECT @solutionDir = REPLACE('$(SolutionPath)','MySoulution.sln','');
SET @File = @solutionDir + 'myScript.sql'
-- and here I can use the @File

当我进行本地发布/或构建时,我可以使用变量/宏 $(SolutionPath) 来获取解决方案的完整本地路径。

这样我就可以指向我需要访问的脚本。

在 AzureDevops 中失败

但是 Azure DevOps 构建没有 $(SolutionPath) 宏,我收到以下错误

SCRIPT.POSTDEPLOYMENT.SQL(17,32,17,32): Build error SQL72008: Variable SolutionPath is not defined.

所以我需要一种方法(在 AzureDevops 中)在构建步骤中获取脚本的路径。

我尝试过的

  1. 我尝试了各种宏,但似乎不起作用。
  2. 我曾尝试与 predefined variables 合作
  3. 我尝试使用SqlCommandVariableOverride但不久前它似乎从数据库项目中消失了。

问题

  1. 如何将 $(SolutionPath)(或其他内容)添加到我的构建步骤中,以便在本地和 Azure DevOps 构建中都有效?
  2. 是否有其他方法可以获取部署后 SQLCMD 文件的解决方案或项目 URL?
  3. MSBuild Extension Pack我应该看什么?如果这是我唯一的选择,我会的。

附注

我也created a ticket for this in Azure Pipelines Tasks因为他们似乎没有那么积极地回答,我等不及了。

我在 developercommunity.visualstudio.com 上问了同样的问题。希望那里有人能够回答这个问题。如果是这样,我将用答案更新此问题。

最佳答案

因此,首先仔细检查您的构建是否正在发布工件。您的构建的右上角应该有一个蓝色按钮,上面写着“artifacts”。要访问工件,您需要在完成构建后执行存档任务并将其指向

$(Build.ArtifactStagingDirectory)

那么我建议不要使用 SQL 直接引用构建服务器的文件系统。如果这是绝对必要的,那么您应该使用环境变量。

我建议设置一个发布管道来部署 SQL 脚本。发布管道实际上是为部署而设计的,而构建则是为编译而设计的。

要配置版本,请将其指向工件,然后您可以通过 $(System.DefaultWorkingDirectory)/**/*.zip 访问该工件,然后运行您想要执行的任何命令处理那个。

关于azure-devops - 如何在 Azure DevOps 的 Script.PostDeployment.sql 中引用 sql 脚本(而非过程)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58183392/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com