我正在将部署基础结构移植到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)?如果没有,那么最简单的方法是什么呢?
答案 0 :(得分:2)
我自己还没有尝试过,但是是否允许在托管代理上为当前用户安装Powershell模块?因为Invoke-SqlCmd是SqlServer module的一部分,所以可以使用以下命令从Powershell库中安装它:
Install-Module -Name SqlServer -Scope CurrentUser
答案 1 :(得分:0)
您可以尝试创建一个软件包以在代理上安装所需的工具,因为现在可以这样做。您可以使用Chocolatey任务从中运行程序包
有一个(旧的)巧克力包装可以尝试:https://chocolatey.org/packages?q=SQLCMD
不能通过可用的扩展程序之一使用普通的sql脚本吗? 参见here或here
当然,可以选择使用自托管代理,然后您可以安装任何想要的东西。
答案 2 :(得分:0)
这个为我工作
Install-Module -Name SqlServer -Force -AllowClobber
尽管不确定-AllowClobber
,但在我的本地PC上,该命令抱怨没有它的某些东西,因此我没有检查Azure tbh。