SQL Server更改跟踪/更改数据捕获与没有主键的表?

时间:2013-01-05 14:10:01

标签: sql-server database change-tracking change-data-capture

我必须监视数据库中的一个表以进行更改,并将它们复制到另一个数据库中的某个表。由于某种原因,我不能修改原始数据库的结构,所以我不能使用触发器,或创建约束等。变更跟踪似乎是我需要的理想解决方案,但有些表没有主键定义所以我无法使用它。至于更改数据捕获,此处 - http://msdn.microsoft.com/en-us/library/bb522511.aspx编写如下:

“要启用网络跟踪,源表必须具有主键或唯一索引。”

所以基本上,似乎存在类似的问题。

这种情况有没有解决办法?或者也许我错过了什么?

1 个答案:

答案 0 :(得分:2)

没有。让他们有一个主键。无论如何它有一个。如果这不起作用 - 抱歉,没有主键,你就知道哪些表真的发生了变化。无论是谁设置了这个应该被鞭打,然后为他写一个小“我需要一份工作”的广告,为麦当劳提供汉堡 - 他显然在数据库设计方面失败了。

您现在唯一的选择是在每次同步时进行完整的数据比较。玩得开心。没有解决方法。此技术需要定义一个主键,如果您不能使用触发器或其他任何东西,那么“选择”和代码端数据比较(这将是缓慢的)是您唯一的选择。