简化 SSDT 数据库项目到 localdb 的部署
Posted
技术标签:
【中文标题】简化 SSDT 数据库项目到 localdb 的部署【英文标题】:Streamlined deploy of SSDT Database Project to localdb 【发布时间】:2015-08-17 22:52:07 【问题描述】:如果你在 VS 2015 中有一个 SSDT 数据库项目设置为启动项目,它会在你按下 F5 时执行构建和部署
========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========
========== Deploy: 1 succeeded, 0 failed, 0 skipped ==========
这与“发布...”命令不同,因为它不会引导您完成发布对话框。它只是自动部署到 localdb 实例(通过项目的调试配置指向。
我经常需要将数据库部署到 localdb,以便我可以针对它运行代码生成工具,而不是运行整个解决方案(具有其他应用程序,即我不想通过 F5 运行)。
所以我想要做的是确定是否有一个项目级别的推荐,我可以添加到我的工具栏,它可以自动将无对话框部署到 localdb,而不是 F5 的 Start Debug 命令。我正在查看“添加命令”对话框(右键单击工具栏->“自定义”),还查看了来自“键盘自定义”选项中的 SSDT.* 命令。
有谁知道是否有一个仅用于数据库项目 Build+Deploy 或 Deploy 的命令,它会自动执行吗? (同样,“发布...”命令不是我想要的,因为它不会像上面那样自动部署)
【问题讨论】:
【参考方案1】:我尝试了不同的方法来做到这一点,我左右摇摆的两种方法是:
有一个 powershell 脚本来调用 sqlpackage.exe 来部署 dacpac。正常构建项目(ctrl+shift + b)然后 alt tab 到 powershell 并运行最后一个命令(部署脚本)
使用 Studioshell (https://studioshell.codeplex.com/) 创建一个 Visual Studio 命令来进行构建然后部署,然后您可以映射
(2) 更接近您想要的,但我个人更喜欢 (1),因为它更简单。使用 (1) 对我的好处是:
该脚本与我在 CI、QA、Prod 等中用于部署 dacpac 的脚本相同,因此这意味着我对其进行了很多(和很多)测试 我很容易看到任何错误和警告,并且可以密切关注对象何时被一遍又一遍地重新部署,这样我就可以解决问题而不是不注意并且部署时间越来越长我看到很多类似的问题,所以我想我会正确地写下我的想法:https://the.agilesql.club/blog/Ed-Elliott/Visual-Studio-SSDT-Publish-My-Personal-Best-Practices
无论你做什么(这个或其他什么)跟进你的经历,我(至少!)会觉得很有趣!
编辑
【讨论】:
不知道 sqlpackage.exe,谢谢。我能够把它放在一个构建后的事件中,所以它会在构建时发生。不确定它是否是正确的解决方案,因为它本质上是为调试构建而硬编码的,但您可以将它与配置文件结合起来,为不同的构建提供更灵活的东西(参见链接)。在我的情况下,我真的不希望它自动部署到除 localdb 以外的任何地方,并且其他部署是使用模式比较+脚本到文件的显式部署。 benday.com/2012/12/18/…【参考方案2】:我找到了两种选择:
右键解决方案,选择“启动项目”,“多个启动项目”,将数据库项目设为其中之一。
右键单击解决方案,选择“项目依赖项”,并使数据库项目成为将要构建的其他项目之一的依赖项。
【讨论】:
以上是关于简化 SSDT 数据库项目到 localdb 的部署的主要内容,如果未能解决你的问题,请参考以下文章