【问题标题】:Ignore DEFAULT with Sql Compare使用 Sql 比较忽略 DEFAULT
【发布时间】:2014-05-14 10:06:33
【问题描述】:

我最近下载了 RedGate 的 SQL Compare 软件的免费试用版。我需要证明它对我的公司来说是一个有用的工具,这样我们就可以获得一些许可证,但也希望获得一些同步的数据库模式。我正在尝试对 2 个数据库进行模式比较,但我得到了一些不需要的行为。当我们对getdate() 使用DEFAULT 约束时,问题就出现了。 Sql Compare 将其显示为差异,但实际上它是相同的。

[lst_updt_dtm] [datetime] NOT NULL CONSTRAINT [DF__event_fil__lst_u__26667738] DEFAULT (getdate()),

不同于

[lst_updt_dtm] [datetime] NOT NULL CONSTRAINT [DF__event_fil__lst_u__668030F6] DEFAULT (getdate()),

我想忽略这些差异并获得架构更改位置的真实比较。我的研究工作使我找到了一些遇到同样问题的人,但在所有情况下,redgate 都以类似“此功能不存在,将考虑在未来发布”之类的回应:

http://www.red-gate.com/messageboard/viewtopic.php?t=8816

但是,我找不到任何不到 5 年的信息,所以我希望从那时起,他们已经添加了这个功能

我已尝试查看项目选项并对其进行试验,但似乎没有具体针对此问题。我发现的最接近的是:

忽略约束和索引名称
在比较数据库时忽略索引、外键、主键以及默认、唯一和检查约束的名称。部署数据库时不会忽略名称。

应用此选项时,问题似乎已解决,其中许多项目已从“差异”更改为“相同对象”。但我担心这只是给我提供了一个误报。我不想总是忽略约束和键。

另外,如果当前版本的 Sql Compare 确实无法实现我想要完成的任务,我需要一种方法来在报告和部署时忽略这些差异。我在想以下解决方法可能是可行的:

  1. 过滤掉出现此问题的审计字段,例如lst_updt_dtmarchived_dtm
  2. 出现这个问题的项目手动去打勾(请不要逼我)

【问题讨论】:

  • 您不认为这是您应该向 redgate 作为其第三方应用程序提出的问题,而且使用它的人并不多,而且 redgate 技术帮助热线会更乐意向您吹嘘他们的产品 :)
  • 也许,但我认为这属于支持类别,他们可能不愿意给我,因为我还不是真正的客户。不过谢谢
  • 您是潜在客户,相信我,这不仅是红门,任何企业都会优先考虑潜在客户而不是现有客户。他们将非常乐意为您提供帮助 :)
  • 是的,这是真的,我会试一试。

标签: sql-server database redgate sqlcompare


【解决方案1】:

忽略约束名称仅忽略约束名称。约束上的所有其他属性仍会被评估。当 SQL Server 自动生成约束名称时,您也可以忽略这些名称,因此除非 SQL Server 为您命名约束,否则仍会比较名称。

【讨论】:

  • 好的,感谢您的回复。只是为了澄清一下,你说我发现“忽略约束和索引名称”的选项是处理这个问题的正确方法吗?
  • 是的 - 这将使它停止比较约束名称。
  • 我接受这个作为答案,我用来解决这个问题的选项实际上是“忽略系统约束和索引名称”。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-05
  • 2013-01-31
  • 1970-01-01
  • 1970-01-01
  • 2014-02-21
  • 2019-12-10
相关资源
最近更新 更多