0

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

4

1 回答 1

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
于 2010-01-26T16:23:22.443 回答