SQL Server 数据库项目比较架构忽略同一表中的字段序列

Posted

技术标签:

【中文标题】SQL Server 数据库项目比较架构忽略同一表中的字段序列【英文标题】:SQL Server Database Project Compare Schema ignore Sequence of Fields at same table 【发布时间】:2017-03-20 09:54:42 【问题描述】:

我在不同的数据库中有相同的表,但是字段的顺序不一样。

当我在服务器之间进行比较时,表检测为不同的结构,因为顺序不同。

我可以在每次比较我的数据库时忽略这个吗?

你能告诉我点击哪个选项吗(如果有的话)

我的 SSDT 版本:

【问题讨论】:

SSDT 是一个单独的产品。你有哪个版本?最新的稳定版是 16.5.3 而最新的 RC 是 17.0 RC ignores column order when publishing 谢谢@PanagiotisKanavos 我使用的是 VS 2015,但我不确定我使用的是哪个版本。但我在某些 UI 上看到了 2012 年。我稍后会检查它。可以在 VS 2015 中安装更新吗?也许明天我会检查我的版本。 RC 只能安装在 VS 2015 上,而不是 2017 上。至少你应该使用the latest GA release 16.5。 SSDT 是一个单独的产品,这意味着它与 Visual Studio 本身分开更新。更新确实显示在 Extensions and Updates 中。如果你跟上更新,你可能已经有 16.5, 先生。 @PanagiotisKanavos 我在下载页面找不到 SSDT 16.5.3。我正在使用扩展和更新安装 SSDT。它下载小.exe然后下载这么多文件。需要很长时间。也许 vs 团队应该为此提供离线安装程序。让你的cmets回答,我会标记为答案。 【参考方案1】:

目前,“忽略列顺序”不是 SSDT 的选项。它曾经出现在旧的 VSTSDB 项目中,但还没有回来。我听说它会在某个时候回归,但您需要密切关注 SSDT 博客,看看会发生什么。

编辑:忽略列顺序现在可在最新版本的 SSDT 中使用。 (下文格林先生注明)

【讨论】:

忽略列顺序现在在 VS2015 中可用。见blogs.msdn.microsoft.com/ssdt/2017/04/19/…【参考方案2】:

如this blog post 所述,Ignore column order 现在是 SSDT 版本 17.0 中的一个选项,它与 Visual Studio 2015 兼容。

如果您曾经不得不处理意外数据 将列放在表定义的中间时的动作, 你会知道发现和管理这有多么困难。在这个版本中 您现在可以检查高级中的“忽略列顺序”选项 发布选项。这会将新列附加到 现有表而不是更改表结构以添加 列在其列出的位置。

您可以通过进入发布配置文件的Advanced... 按钮部分以及数据库项目属性的Debug 选项卡的Advanced... 按钮部分找到该设置。

您也可以通过将以下元素添加到您的 publish.xml 文件来实现相同的效果:

<IgnoreColumnOrder>True</IgnoreColumnOrder>

【讨论】:

更新的好消息。目前更新已经存在,我会尽快尝试并给出结果...【参考方案3】:

你可以告诉它完全忽略下面的表:对象类型 -> 应用范围 -> 表

或者您可以通过取消选中结果窗口中的相应行来排除由于列顺序差异而要进行的特定更改。

【讨论】:

这不是 OP 所要求的。这将使模式比较几乎无用

以上是关于SQL Server 数据库项目比较架构忽略同一表中的字段序列的主要内容,如果未能解决你的问题,请参考以下文章

如何比较sql server中忽略秒的两个日期

同一表的 UPDATE 上的 SQL Server 死锁

如何比较同一张表(SQL Server)中的 2 行?

在 Visual Studio 和 SQL Server 中按架构名称比较架构

SQL Server:从同一个表和不同表中获取日期时使用其他东西而不是联合

SQL Server 2005 日期比较 - 排序问题