我遇到的情况是,我的SSDT /数据库项目中存在的数据库模式具有较少的模式,而生产数据库将具有更多的模式对象。这些额外的模式对象仅由客户为其自己的目的创建(例如,用于维护)。
简而言之,SSDT /数据库项目包含与应用程序相关的所有模式,其中产品/客户环境包含与应用程序相关的模式以及一些与维护相关的模式对象
现在我需要修改SSDT /数据库项目中的一些与应用程序相关的模式对象,但我担心的是当我向客户提供构建时,那么SSDT /数据库项目的默认性质是比较2数据库即来源(客户数据库)和Target(SSDT /数据库项目)并从源中删除目标中不存在的对象。因此,客户为维护目的而创建的对象将被删除。
所以我可以通过SSDT /数据库项目设置来避免这种情况。
提前致谢
答案 0 :(得分:1)
SQLPackage和发布配置文件都有一个选项,如果它们不在源中,您可以设置为不删除对象。我经常将它用于我们的生产数据库版本。
查看http://msdn.microsoft.com/en-us/library/hh550080%28v=vs.103%29.aspx以获取SQLPackage参考。您需要的参数如" DropConstraintsNotInSource"," DropDmlTriggersNotInSource"," DropObjectsNotInSource"等。
如果右键单击SQL项目并选择"发布",然后单击"高级"按钮,您将看到删除/不删除对象的各种选项。
如果您不小心关注这种情况,我会设置一个包含您要使用的设置的发布配置文件,然后仅使用它来推送您的更改。您可以轻松保存选择发布时使用的发布选项,然后再引用。 Jamie Thomson在这里有一个很棒的博客:http://sqlblog.com/blogs/jamie_thomson/archive/2012/05/09/publish-profile-files-in-sql-server-data-tools-ssdt.aspx