【问题标题】:How use Sync Framework to sync tables that are recreated with mostly the same data?如何使用 Sync Framework 同步使用大部分相同数据重新创建的表?
【发布时间】:2014-01-10 19:34:45
【问题描述】:

我已经做了一个程序,它使用 Sync Framework 将一些表从 Azure 同步到 OnPremise(本地服务器)。 我按照这个例子制作了程序:How to: Configure and Execute Synchronization with SQL Azure.

对于他的更改是新行的表格,它的工作速度令人难以置信。 新行同步完美。第一次同步需要几个小时,但现在所有同步都需要几秒钟。

但我们还有其他表被删除并使用几乎相同的数据重新创建(99% 是旧数据,1% 是新数据)。更新这些表的程序:删除所有数据并重新添加所有数据(包括新的)。

在这种情况下,我们的同步程序看到所有表都发生了变化。它的速度很慢。所有同步(第一次、第二次、第三次..)都需要几个小时。

有办法解决吗?

谢谢,

【问题讨论】:

  • 您可能需要编写自己的提供程序,因为 Sync Framework 将特殊组件构建到已配置的每个表中。通过删除表并重新创建表,框架不知道如何处理它已有的知识。

标签: c# azure sync microsoft-sync-framework


【解决方案1】:

我假设您只是删除行并重新插入,因为如果您实际上是删除表,那么您已经破坏了更改跟踪,因为更改跟踪触发器将随表一起删除。

如果您要重新插入行,则触发器会将跟踪表中的相应行标记为已更改。同步时,即使您之前已经同步过行,也会同步这些行。由于行已经存在于目标上,因此会遇到冲突,从而减慢速度。如果您有 100 万行,则需要解决 100 万个冲突。

【讨论】:

  • 也许您可以帮助我们解决这种情况:我们需要将 Win2003 服务器中的本地 SQL2005 与 Azure 同步。我们正在使用 SyncOrchestator,它可以很酷地同步一些表。但是对于重新创建的其他表,该过程非常缓慢。我们不能使用 SychOrchestator,因为这个过程非常慢。我们不能使用 SychAgent,因为它只适用于 SQL CE。我们不能使用集成服务,因为我们有 SQL 2005。我们不能使用 Azure 同步代理,因为我们有 Win2003。而且我们需要一个自动过程来将表从本地服务器移动到 Azure.... 有什么想法吗?
【解决方案2】:

作为@JNYRanger:“您可能需要编写自己的提供程序,因为同步框架将特殊组件构建到已配置的每个表中。通过删除表并重新创建表,框架不知道如何处理它已经拥有的知识”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 2012-08-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多