同步框架v.2.1和SQL Express上的变化跟踪的n层与WCF代理

本文关键字:跟踪 变化 层与 代理 WCF Express 框架 SQL 同步 | 更新日期: 2023-09-27 18:05:38

我很高兴在一个应用程序上使用SyncFx v.2.1。客户端目前使用的是SQLCE,服务器端使用的是Server 2008 r2。我使用SyncFx代理并在WCF服务中托管服务器SyncAdapterBuilder代码。客户端有SyncAgent和SyncTables,工作正常。我使用集成的SQL更改跟踪来代替耦合的(也就是自定义/范围)更改跟踪,因为我不允许修改现有的模式。

所以我的问题是系统的需求发生了变化,我需要在客户端上使用SQL Express来支持存储过程。

为什么不合并复制?这些要求还禁止修改模式或使用触发器。实际上,应用程序的原始版本在迁移到SQLCE的SyncFx之前使用合并复制与SQLCE。

那么这是如何做到的呢?我读了很多相互矛盾的信息,我只能假设这是对不断发展的SyncFx版本的回应。没有直接的例子说明如何在两者上实现SQL到SQL Express的更改跟踪。另外,我正试图从功能SQLCE实现过渡到尽可能少的变化表达。客户端已经能够使用任何一种类型的数据库,只是当前的同步进程需要改变。

这是我发现的,但还没有成功。我已经阅读了关于此事的每一个StackOverflow响应,我仍然没有找到一种方法来做到这一点,实际上是有效的。

  1. 数据库同步:SQL Server和SQL Express N-Tier with WCF:这个MS的例子与SyncOrchistrator一起工作得很好,但是提供了侧跟踪表和触发器。我无法修改这一点,这样的变化跟踪可以在客户端和服务器上使用。
  2. 同步框架与SQL Server 2008变化跟踪:StephaneT在这里建议,只需使用普通的SQLCE方法与SQL Express样例同步提供程序和SyncFx 2.0技术,只需要修改客户端表。不幸的是,这个示例SQL Express提供程序的所有链接似乎都被删除了,JuneT甚至Liam Cavanagh在MSDN上的其他帖子都建议使用新的官方SqlServerProvider,而不是DbServerProvider的定制版本。问题是在任何地方都没有这个示例实现,我还没有能够通过试验和错误找出它。
  3. 使用WCF同步SQL Server 2008数据库同步框架:Raj给出了最好的例子(简单且容易转换为SQLCE进程),不幸的是,它也使用了似乎已经从互联网上消失的SqlExpressClientSyncProvider。它还需要一个锚表来跟踪客户端,我认为我可以逃脱,因为我不允许修改"现有"表上的模式。

有什么可以帮助我的例子吗?从本质上讲,我想通过使用SyncAgent集成SQL更改跟踪的代理将现有功能的SQLCE SyncFx移植到一个适用于SQL Express的版本,而无需更改现有模式或使用触发器。我还应该提到,我大量使用过滤器参数,因为复制中有150多个表,如果没有过滤器,它们将非常大。我读过一些参考资料,说SqlExpressClientSyncProvider不支持过滤器,但这对我来说是不可能验证的,因为我找不到对该代码的引用,仍然是好的。

也许有一个更新Raj的例子,使用SqlServerSyncProvider

提前感谢任何可以为我指出正确方向的人!

同步框架v.2.1和SQL Express上的变化跟踪的n层与WCF代理

看看这个链接,你可能仍然会在评论区找到一些下载链接:http://www.8bit.rs/blog/2009/05/debugging-sql-express-client-sync-provider/

请注意,即使是示例SqlExpressClientSyncProvider也使用触发器来跟踪墓碑表中的删除操作。同样,您需要在表中有列来跟踪何时插入或更新了一行(日期时间或时间戳列)。

关于过滤,您可以轻松地修改适配器中的查询,以包含过滤器子句。

新的SqlSyncProvider不支持Sql更改跟踪,因为它实现了自己的跟踪机制。较新的提供者在点对点场景中工作,因此它也可以跟踪特定更改来自哪个副本。