长时间读者,首次提问者!DACPAC中的非SQL Post部署脚本
我一直在关注我一直在讨论的问题,我们正在为我们的数据库代码部署DACPAC,在新的“DevOps”世界中需要几乎一次点击就完成了。这应该可以在MSI创建的时候完成,但是我推动添加了这个功能,所以我将它保存在DACPAC中,因为我可以控制这一方面。
有谁知道一种方法来执行不是SQL的post/pre部署脚本。理想的PowerShell,但最初我只需要创建文件夹结构并移动一些文件。
出于安全原因,xp_cmdshell不存在问题。
我想过创建一个SQL Agent作业来自动运行PowerShell,然后删除它自己,但我宁愿不通过游说的路线,它似乎太杂乱。
任何意见将不胜感激。
编辑:SQLCMD模式支持
:!! [命令]
例如
:!! MKDIR C:\测试
不幸的Visual Studio不支持SQLCMD的那个水平,从而回到绘图板。
嘿编感谢您的答复,并是的完全同意,我一直是PowerShell的人,所以理想的方式是部署PS与特别的额外脚本。不幸的是,我在一个非常庞大的组织中工作,一些多付的顾问已经引发了一些devops buzz的话,并且他们已经走了一条不允许的路线(他们将它们包装在MSI中)。我在几周前递交了我的通知,因为那些令我沮丧的事情,我只是试图想出一个解决方案,现在比任何事情都更能证明一个问题:)我现在将它发布。 – Ollie
Nevermind我的修复程序在Visual Studio中不起作用,我找到了SQLCMD模式的文档,并且可以使用以下命令运行命令:!! mkdir C:\ Test但是Visual Studio不支持所有SQLCMD功能,未来虽然! – Ollie
如果他们是msi的,你可以在完成后添加一个动作来运行吗?微星有一个MoveFileAction。如果你可以编写代码,你可以编写一个构建执行器,一个.net dll文件,这个文件需要放在相对于执行部署脚本时调用的sqlpackage的特定位置 - 然后你可以做你喜欢的,执行部署之前,期间或之后。说实话,如果你在几个星期内离开,我会记录下每个人的不同方法和好处,留给下一个人去争论/哭泣:)这听起来像是他们会改变它 –