在Azure DevOps发布管道中从PowerShell执行SQLCMD.exe

时间:2018-10-15 18:02:50

标签: powershell azure-devops sqlcmd

我正在将部署基础结构移植到Azure DevOps(以前是Visual Studio Team Services),但是遇到一个我找不到任何好的解决方案的问题。

我们正在使用EF Core Migrations,to work around some unrelated issues我们需要将SQL脚本动态包装在SQLCmd中,而使用PowerShell则很容易。

但是,当在发布管道中将脚本作为常规PowerShell步骤执行时,该脚本失败,因为SQLCMD.exe不可用。并不奇怪-但我也找不到任何记录的安装方式。

是否存在工具安装程序或某些类似的现成组件,这些组件可以让我执行PowerShell脚本,该脚本作为Azure Devops管道的一部分(通过Invoke-SqlCmd调用SQLCMD.exe)?如果没有,那么最简单的方法是什么呢?

3 个答案:

答案 0 :(得分:2)

我自己还没有尝试过,但是是否允许在托管代理上为当前用户安装Powershell模块?因为Invoke-SqlCmd是SqlServer module的一部分,所以可以使用以下命令从Powershell库中安装它:

Install-Module -Name SqlServer -Scope CurrentUser

答案 1 :(得分:0)

您可以尝试创建一个软件包以在代理上安装所需的工具,因为现在可以这样做。您可以使用Chocolatey任务从中运行程序包

有一个(旧的)巧克力包装可以尝试:https://chocolatey.org/packages?q=SQLCMD

不能通过可用的扩展程序之一使用普通的sql脚本吗? 参见herehere

当然,可以选择使用自托管代理,然后您可以安装任何想要的东西。

答案 2 :(得分:0)

这个为我工作

Install-Module -Name SqlServer -Force -AllowClobber

尽管不确定-AllowClobber,但在我的本地PC上,该命令抱怨没有它的某些东西,因此我没有检查Azure tbh。