【问题标题】:Bulk and batching between SQL Server 2008 and SQL Server 2008 Express without stored proceduresSQL Server 2008 和 SQL Server 2008 Express 之间的批量和批处理,无需存储过程
【发布时间】:2013-01-13 15:07:52
【问题描述】:

我想使用 MS Sync Framework v2.1 从 SQL Server 2008 同步到 SQL Server 2008 Express 客户端。当客户端关闭时,服务器可能有多达几十万个新行。由于可能的行数很多,我想实现批处理和批量导入。

有没有人知道如何处理这种从服务器同步到客户端的未知(几行到大量行)的情况?

使这更难的一个要求是服务器不能运行存储过程,所以我认为禁止使用SyncOrchestrator/SqlSyncProvider,除非客户端可以使用SqlSyncProvider并且服务器使用另一个不需要的提供程序存储过程?

我尝试了这种方法,将SyncOrchestrator/SqlSyncProvider 用于本地提供程序,将DbServerProvider 用于RemoteProvider,但收到了InvalidCastException。这可能吗?

考虑到在服务器上不使用存储过程的限制,有没有更好的选择?

【问题讨论】:

    标签: c# sql-server-2008 sync microsoft-sync-framework


    【解决方案1】:

    DBServerProvider 是一个较旧的提供程序,其工作方式不同。您将它与 SyncAgent/SqlCeClientSyncProvider/DbServerSyncProvider 组合一起使用。这些提供者是“基于锚的”。

    SyncOrchestrator/SqlSyncProvider/SqlCeSyncProvider 组合是较新的组合,并且是“基于知识的”。

    较旧的 DbServerProvider OOTB 仅支持客户端数据库的 SQL Compact。曾经有一个 SQLExpressClientSyncProvider,但 MS 已经从下载站点中取出它。

    通过在代码中自己构建 SQLCommands,有一些方法可以避免不使用 SqlSyncProvider 的存储过程。不过,您仍然需要触发器和跟踪表来跟踪更改。

    【讨论】:

    • 我无法找到将 OOTB SqlSyncProvider 与批处理/批量插入与 SqlExpressClientsyncProvider(使用 DbServerProvider 进行修改)和 SQL 更改跟踪之间的性能比较。采用更改跟踪路由的原因是,假设大量插入服务器会导致触发器与内部更改跟踪表相比存在较大的性能问题。这是真的吗?
    • 看看这个讨论和MS围绕SQL CT的回复:social.msdn.microsoft.com/Forums/en-US/synclab/thread/…
    猜你喜欢
    • 2012-01-10
    • 2012-02-03
    • 1970-01-01
    • 2015-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-15
    相关资源
    最近更新 更多