use*_*544 5 sql-server dacpac sql-server-data-tools azure-sql-database
我有一个带有*.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)以及如何轻松测试和验证贡献者行为。
| 归档时间: |
|
| 查看次数: |
6153 次 |
| 最近记录: |