发布数据库项目时如何禁用删除和创建视图和功能?

Posted

技术标签:

【中文标题】发布数据库项目时如何禁用删除和创建视图和功能?【英文标题】:How to disable dropping and creating views and functions when publishing database project? 【发布时间】:2015-07-30 21:17:55 【问题描述】:

当我发布面向 SQL Server 2012 的 Visual Studio 数据库项目时,它会生成包含放置视图和函数语句的脚本,然后创建这些视图和函数,尽管与数据库相比,DB 项目中的这些视图和函数根本没有变化。如何禁用此行为? 我希望发布的输出等于我在架构比较(项目到数据库)之后生成脚本时得到的输出,所以只影响有更改的对象。

【问题讨论】:

【参考方案1】:

您确定没有差异吗?即使“不用于复制”选项的差异也可能导致问题。将实时数据库与您的项目进行比较,看看有什么不同(工具 - SQL - 比较架构)。如果存在差异,请修复它们。否则,您不应该看到任何实际变化。正如基思所说,检查以确保您没有启用“始终重新创建”选项。这可能会给您带来麻烦,尽管它通常不会删除单个项目,而是删除整个数据库。您可能还想检查排序规则 - 如果它们不同,您可能会遇到问题。

【讨论】:

【参考方案2】:

确保在高级发布设置中未选中“始终重新创建数据库”选项。

【讨论】:

【参考方案3】:

找到 SSDT 认为该方案不同的原因,我认为这是第一个呼叫点。 SQL Scheme compare 是你的朋友。 (在VS下Tools => SQL => New Scheme Comparison...)

计算列定义和约束定义绝对是候选者,潜在的列排序也是如此。具有讽刺意味的是,我确实对计算列有一个问题,但这不是定义,而是我没有在列定义的末尾添加 NOT NULL (当然这是默认设置),但 SSDT 认为这是不同的每次。

【讨论】:

以上是关于发布数据库项目时如何禁用删除和创建视图和功能?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Eclipse Web项目中禁用“autodeploy”到服务器功能

用户单击按钮时如何动态创建和删除视图[重复]

iPhone SDK:禁用在文本字段(或文本视图)中自动创建点 (.)

为列表视图和列表视图项创建单独的上下文菜单

滚动回收站视图时如何防止项目重复

如何在按钮单击时在一个视图控制器中正确启用和禁用约束