【问题标题】:How can I deploy only a select set of stored procedures in a DACPAC deployment?如何在 DACPAC 部署中仅部署一组选定的存储过程?
【发布时间】:2020-08-08 08:48:16
【问题描述】:

我有一个包含数据库项目的 Visual Studio 项目。我创建了一个执行软件更新的可执行文件,该更新的一部分是更新数据库。一些存储过程依赖于现有的链接服务器,该链接服务器也被创建为可执行文件的一部分。问题是此功能是可选的,并且链接服务器无法连接到某些客户端计算机上。但 DACPAC 失败,因为链接服务器无法连接。我正在使用 sqlpackage.exe 来部署 .dacpac 文件。

有什么方法可以部署全部或部分存储过程?或者也许我可以设置一个标志来忽略链接服务器错误?或者也许有另一种使用 sqlpackage/dacpac 的方法?

我想到的一个选择是将包含链接服务器的存储过程转换为动态 SQL。

在 Visual Studio 中拥有数据库,因此源代码控制很重要。

【问题讨论】:

    标签: sql-server-data-tools dacpac


    【解决方案1】:

    是的!

    这很容易做到。您可以在 Visual Studio 中查看您的数据库项目。我建议删除有问题的存储过程并将它们合并回主控。然后我会取出一个特性分支并再次指向你有存储过程的数据库,并使用模式比较来取回它们(即使是那些不能正常工作的数据库,这样你就不会丢失它们) .将提交推送到功能分支存储库。然后,既然您在源代码控制中拥有有问题的存储过程 + 在 master 中的可交付版本 - 您可以继续通过数据库项目通过 Visual Studio“发布”到您想要选定对象的 DB 中。

    如果您还没有签入任何要掌握的内容 - 您可以进行架构比较并选择所有对象,除了那些有问题的对象并更新您的数据库项目。并将其合并为master。如果这没有意义,请对此答案发表评论,我很乐意提供更多详细信息。

    【讨论】:

      【解决方案2】:

      好吧,我遇到了这个。仍在努力实现这一点以解决我的问题。也可能对您的事业有所帮助。

      从以下位置下载过滤器: https://agilesqlclub.codeplex.com/releases/view/610727 把 dll 进入与 sqlpackage.exe 相同的文件夹并添加这些命令行 部署参数:

      /p:AdditionalDeploymentContributors=AgileSqlClub.DeploymentFilterContributor /p:AdditionalDeploymentContributorArguments="SqlPackageFilter=IgnoreSchema(BLAH)"

      这不会部署、删除或更改 BLAH 架构中的任何内容。

      更多详情 https://the.agilesql.club/2015/01/howto-filter-dacpac-deployments/

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-20
      • 1970-01-01
      • 2016-05-09
      相关资源
      最近更新 更多