长时间读者,第一次问问!
我一直在绞尽脑汁解决我遇到的问题,我们正在为我们的数据库代码部署DACPAC,在新的" DevOps"它只需点击一下即可完成。这应该可以在MSI创建中完成,但是我在推动添加该功能时面临蓝色,因此我将其保留在DACPAC中,因为我可以控制这一方面。
有没有人知道执行不是SQL的后/部署前脚本的方法。理想情况下是PowerShell,但最初我只需要创建文件夹结构并移动一些文件。
出于安全原因,xp_cmdshell是不可能的。
我考虑创建一个SQL代理作业,以便在部署后自动运行powershell,然后删除它自己,但我宁愿不通过游说的路线,它看起来太乱了。
非常感谢任何建议。
编辑:SQLCMD模式支持
:!! [命令]
e.g。
:!! mkdir C:\ Test
不幸的是,Visual Studio并不支持这个级别的SQLCMD,所以回到绘图板。
答案 0 :(得分:2)
我认为你可能会略微错误地看待它,而不是让dacpac做其他我们通常做的事情是有一个PowerShell脚本部署dacpac然后做x。
通常需要在部署过程中包含一个预部署前脚本,我们希望在比较发生之前运行一些sql,因此该过程将包含一个PowerShell脚本:
在您的情况下,您将部署您的dacpac,然后在您的脚本中执行其他操作。
无论哪种方式,您总是希望脚本执行部署,因为您希望源控制您使用的参数(如果密码或环境特定的东西,那么它们将是参数等)
希望这是有道理的,你提到的一件事是它应该是一次点击并完成 - 如果这意味着dba或有人点击dacpac进行部署然后这不是devops :)
版