【发布时间】:2015-09-02 01:27:23
【问题描述】:
我很高兴地编写了一个使用 a, Sql Server 数据库项目和生活一直很好,直到我们 发现升级有问题。
当我们创建表、存储过程和各种其他数据库制品时, 一旦部署到客户那里,他们就可以将自己的列添加到我们的 dacpac 创建的表中。
我们使用 DacFx 进行部署 (Microsoft.SqlServer.Dac),还为坚持由其 DBA 部署的客户提供原始 dacpac。
虽然在使用 SSMS 或类似工具时问题可能仍然存在, 我确信使用“正确”的代码,我们应该能够在通过代码部署时以某种方式防止这种情况。
有没有人遇到过同样的问题并且可能找到了解决方案?
更新,添加部署设置截图。 如图所示,“Drop objects in target but not in project”设置已关闭。
【问题讨论】:
-
所以确切的问题是客户可以创建额外的列,但是当您部署 DacPac 时它会删除这些列?
-
@Nick.McDermaid 这正是问题所在,措辞非常好:)
-
嗨,路易斯,你有没有找到一个好的解决方案?我还需要能够部署而不是删除列(从选定的表中),同时添加已引入数据库项目的新列
-
嗨@SimonGreen,我也有同样的问题,你找到解决方案了吗?
-
嗨,我没有找到很好的解决方案,不。我写了一个修饰符来检测Alter Table Steps是否在计划中(在这种情况下我只是删除它们),或者是否使用了SqlTableMigrationTStep,在这种情况下我必须删除整个步骤,然后放入一系列的当删除 SqlMigrationStep 时允许 dacpac 部署成功完成的例程......此外,我必须手动实现我想要的列添加和删除,但执行老式脚本,如“如果不存在我的新列,然后创建它'...
标签: sql-server dacpac dac data-tier-applications