DACPAC中的非SQL Post部署脚本

时间:2017-03-15 15:20:46

标签: sql-server deployment dacpac

长时间读者,第一次问问!

我一直在绞尽脑汁解决我遇到的问题,我们正在为我们的数据库代码部署DACPAC,在新的" DevOps"它只需点击一下即可完成。这应该可以在MSI创建中完成,但是我在推动添加该功能时面临蓝色,因此我将其保留在DACPAC中,因为我可以控制这一方面。

有没有人知道执行不是SQL的后/部署前脚本的方法。理想情况下是PowerShell,但最初我只需要创建文件夹结构并移动一些文件。

出于安全原因,

xp_cmdshell是不可能的。

我考虑创建一个SQL代理作业,以便在部署后自动运行powershell,然后删除它自己,但我宁愿不通过游说的路线,它看起来太乱了。

非常感谢任何建议。

编辑:SQLCMD模式支持

  

:!! [命令]

e.g。

  

:!! mkdir C:\ Test

不幸的是,Visual Studio并不支持这个级别的SQLCMD,所以回到绘图板。

1 个答案:

答案 0 :(得分:2)

我认为你可能会略微错误地看待它,而不是让dacpac做其他我们通常做的事情是有一个PowerShell脚本部署dacpac然后做x。

通常需要在部署过程中包含一个预部署前脚本,我们希望在比较发生之前运行一些sql,因此该过程将包含一个PowerShell脚本:

  • 检查预部署前脚本并运行它
  • 通过调用sqlpackage或使用DacServices .net库来部署dacpac

在您的情况下,您将部署您的dacpac,然后在您的脚本中执行其他操作。

无论哪种方式,您总是希望脚本执行部署,因为您希望源控制您使用的参数(如果密码或环境特定的东西,那么它们将是参数等)

希望这是有道理的,你提到的一件事是它应该是一次点击并完成 - 如果这意味着dba或有人点击dacpac进行部署然后这不是devops :)