我最近下载了 RedGate 的 SQL Compare 软件的免费试用版。我需要证明它对我的公司来说是一个有用的工具,这样我们就可以获得一些许可证,但也希望获得一些同步的数据库模式。我正在尝试对 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 年的信息,所以我希望从那时起,他们已经添加了这个功能
我已经尝试过查看项目选项并对其进行试验,但似乎没有特定于这个问题。我发现的最接近的是:
忽略约束和索引名称
在比较数据库时忽略索引、外键、主键以及默认、唯一和检查约束的名称。部署数据库时不会忽略这些名称。
应用此选项时,问题似乎已解决,其中许多项目已从“差异”更改为“相同对象”。但我担心这只是给我提供了一个误报。我不想总是忽略约束和键。
此外,如果当前版本的 Sql Compare 确实无法实现我想要完成的任务,我需要一种方法来在报告和部署时忽略这些差异。我在想以下解决方法可能是可能的:
- 筛选出出现此问题的审计字段,例如
lst_updt_dtm
和archived_dtm
- 手动遍历并勾选出现此问题的项目(请不要让我)