【问题标题】:How to split synchronization process in sync framework如何在同步框架中拆分同步过程
【发布时间】:2010-01-13 12:35:17
【问题描述】:

我正在使用同步框架将 sql server 2008 数据库与移动设备上的 sqlCE 同步。除了一些问题外,一切看起来都很好。其中之一是:
如果我想同步 1000 行或更多行,我会在移动设备上收到 OutOfMemory 异常(同步完成得很好,因为在它之后我检查了一些行的数据并且它看起来已同步)。我认为可能太大的 xml 在移动设备和服务器之间旋转(对于 100 行 evrth 工作得很好)......这就是为什么我问如何拆分发送的数据。但也许我错了。我没有在这方面找到任何资源,所以我不知道什么可以消耗这么多内存来将 60Kb 添加到紧凑型数据库中。

【问题讨论】:

    标签: c# memory windows-mobile sql-server-ce microsoft-sync-framework


    【解决方案1】:

    您需要实现某种批处理。

    这里显示了一个非常幼稚的版本: http://msdn.microsoft.com/en-us/library/bb902828.aspx.

    我看到您对某些过滤器很感兴趣。如果这会过滤掉一些或很多行,我建议您编写自己的批处理逻辑。我们当前使用的将@sync_new_received_anchor 设置为要同步的@sync_batch_size:th 行的锚点。

    以一种非常简化的方式,逻辑如下所示:

    SELECT @sync_new_received_anchor = MAX(ThisBatch.ChangeVersion) 
        FROM (SELECT TOP (@sync_batch_size) CT.SYS_CHANGE_VERSION AS ChangeVersion 
            FROM TabletoSync
                 INNER JOIN CHANGETABLE(CHANGES [TabletoSync],
                                    @sync_last_received_anchor) AS CT 
                ON TabletoSync. TabletoSyncID = CT. TabletoSyncID 
                WHERE TabletoSync.FilterColumn = @ToClient
                ORDER BY CT.SYS_CHANGE_VERSION ASC) AS ThisBatch
    

    【讨论】:

    • 谢谢!稍后我会尝试一下,因为现在还有其他任务。如果有帮助,肯定会接受答案,但我理解你给出的观点,所以谢谢。
    • 好的,如果你想让我澄清一些事情,请告诉我。
    猜你喜欢
    • 2011-01-26
    • 2023-04-03
    • 2010-11-17
    • 2010-11-03
    • 1970-01-01
    • 2014-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多