我有一个带有 *.sqlproj 项目的 VS2013 解决方案,其中包含特定于该解决方案的对象。问题是这对于其他项目来说也是常见的数据库。
我的问题是自动将模式中的更改部署到数据库而不影响其他对象。默认情况下,DACPAC 会更新整个数据库,这在我的情况下是不需要的。
我尝试编写部署贡献者http://msdn.microsoft.com/en-us/library/dn268597(v=vs.103).aspx但似乎无法将其放在解决方案文件夹中,因为它必须放置在 SQL Server 的 Program Files 子文件夹中。
我使用 Bamboo 创建部署包,该应用程序托管在带有 Azure SQL 数据库的 Microsoft Azure 上。
有什么方法可以使用 DACPAC 或其他自动方式仅在我的架构内部署数据库更改吗?
您的两个选择如下:
将 SqlPackage.exe 和其他 DAC DLL 复制到解决方案内的文件夹或由部署团队控制的文件夹中。还将您的贡献者 DLL 复制到同一文件夹中。然后确保在部署时使用该位置的 SqlPackage.exe。由于将检查与 Microsoft.Data.Tools.Schema.Sql.dll 位于同一文件夹中的任何 DLL 的扩展名,因此您可以使用此方法在部署期间包含您的贡献者,而无需安装到系统范围的位置。
从 dacpac 中筛选出与其他架构相关的对象,然后使用 DropObjectsNotInSource = false 进行部署。这不太理想,因为它不会删除您删除的对象,但好处是您可以在构建时/传递给部署团队之前执行此操作。
请注意,此基本主题包含在API教程我写过,其中有一些样本样本项目。听起来您已经编写了选项#1(该教程有一个简化版本,仅阻止添加,而不是更改/删除),但您可以看到它们之间的比较。此外,示例还展示了如何使用我们的 API 进行发布(这直接映射到使用 SqlPackage.exe)以及如何轻松测试和验证贡献者行为。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)