使用Sql Compare忽略DEFAULT

时间:2014-04-02 21:06:14

标签: sql-server database redgate sqlcompare

我最近下载了RedGate的SQL Compare软件的免费试用版。我需要证明它对我的公司来说是一个有用的工具,所以我们可以得到一些liscenses,但也希望得到一些同步的数据库模式。我试图在2个数据库上进行模式比较,但我得到了一些不需要的行为。当我们对DEFAULT使用getdate()约束时,问题就出现了。 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年的信息,所以我希望从那以后,他们已经添加了这个功能

我已经尝试查看项目选项并尝试使用它们,但似乎没有任何具体问题。我发现最接近的是:

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

当应用此选项时,它似乎已经解决了问题,其中许多项目已经从"差异"到#34;相同的对象"。但我担心这只会让我误报。我不想总是忽略约束和键。

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

  1. 过滤掉发生此问题的审核字段,例如lst_updt_dtmarchived_dtm
  2. 手动检查并检查发生此问题的项目(请不要让我这样做)

1 个答案:

答案 0 :(得分:3)

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