我正在使用sql server 2000.我只需要从远程服务器获取更新的记录,并且需要每天在我的本地服务器中插入该记录。但该表没有创建日期或修改日期字段。
答案 0 :(得分:2)
<强>更新强>
如果您无法对源进行管理操作,那么您将不得不每天读取所有数据。由于您无法检测到更改(请记住,即使您有时间戳,仍然无法检测到更改,因为无法检测带时间戳的删除),那么您必须每次都读取每一行你同步。如果您阅读每一行,那么最简单的解决方案就是用新快照替换您拥有的所有数据。
答案 1 :(得分:1)
您需要以下其中一项
您还可以逐行比较来自远程服务器的数据与生产服务器的数据,以获取新行或更新行的列表......这样的差异更新也可以通过比较一些散列值来生成,每行一个,根据行的所有列的值计算。
除了以上一点,并禁止一些MS-SQL内置的复制设置,我能想到的唯一另一种可能性是[不太漂亮]:
答案 2 :(得分:0)
如果你不能改变远程服务器的数据库,你最好的选择可能是在给定行的值上提出某种散列函数,比较旧表和新表,并只拉取函数中的那些(oldrow)!= function(newrow)。
您也可以直接比较相关列,并在不是所有相关列都相同的时候复制该记录。
这意味着您无法修改新表中的值,或者它们将从旧表中被覆盖。如果这是一个问题,您将需要另一个表来缓存前一天的旧表值;然后你就可以判断旧的,新的或者两者都是在过渡期间被修改过的。
答案 3 :(得分:0)
答案 4 :(得分:0)
总结:
这给我们留下了一个不可能的情况。
如果上面的前3项都是真的,那么你只能选择拉整个表格。即使他们确实有修改的日期/时间列,您也不会检测删除。这让我们回到原点。
与老板谈谈,并要求更好的要求。也许这次可以做点什么。