如何在DACPAC部署中仅部署一组选定的存储过程



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

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

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

在visualstudio中拥有数据库并因此进行源代码管理是很重要的。

是!

这很容易做到。你可以在visualstudio中看到你的数据库项目。我建议删除有问题的存储proc,并将它们合并回master。然后,我会取出一个特性分支,再次指向存储了proc的数据库,并使用模式比较来将它们也取回来(即使是那些工作不好的,这样你就不会丢失它们(。将提交推送到功能分支回购。然后,既然您在源代码管理中有问题的存储过程+在master中有可交付版本,那么您就可以继续通过visualstudio通过数据库项目将所选对象"发布"到您想要的数据库中。

如果您还没有签入任何要掌握的内容,您可以进行模式比较并选择除有问题的对象之外的所有对象,并更新数据库项目。并将其合并为master。如果这没有意义,请对这个答案发表评论,我很乐意提供更多细节。

嗯,我遇到了这个。仍在努力实现这一点以解决我的问题。也许对你的事业也有帮助。

从以下位置下载过滤器: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/

最新更新