我很高兴写了一个使用a的产品, Sql Server数据库项目和生活一直很好,直到我们 发现了升级问题。
虽然我们创建表,存储过程和各种其他数据库文件, 一旦部署在客户手中,他们就可以将自己的列添加到我们的dacpac创建的表中。
我们正在使用DacFx进行部署(Microsoft.SqlServer.Dac),并为坚持DBA部署的客户提供原始dacpac。
虽然使用SSMS或类似工具时可能仍然存在问题, 我确信"对"在部署代码时,我们应该以某种方式阻止这种情况。
有没有人遇到过相同的问题并且可能找到解决方案?
更新,添加部署设置的屏幕截图。 从图像中可以看出," Drop目标中的对象,但不是项目中的#34;设置已经关闭。
答案 0 :(得分:2)
喜欢这句话“我很高兴写了一个使用了Sql Server数据库项目的产品,生活一直很好”哈哈!
您可以编写一个部署参与者,查找新列并从流程中删除删除步骤。
你可以自己编写,也可以自己编写(http://agilesqlclub.codeplex.com/),如果你使用我的,那么这可能适合你:
/ P:AdditionalDeploymentContributorArguments = “SqlPackageFilter = KeepType(。*列*)”
如果你想自己编写,那么你可以使用我的作为指南(源代码在codeplex上)或者特别参见http://blogs.msdn.com/b/ssdt/archive/2013/12/23/dacfx-public-model-tutorial.asp“解决方案2:在部署时过滤”。
版
答案 1 :(得分:0)
有一个选项" DropObjectsNotInSource"如果这是假的,那么列将保留(但你必须专门删除其他对象(比如在部署后)。
latest build中有更多选项,但您不能指定只保留列。