c# – 使用WCF代理在N-Tier上使用SQL Framework进行同步框架v.2.1和更改跟踪

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

所以我的问题是系统的要求已经改变,我需要在客户端上使用SQL Express以支持存储过程.

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

那怎么办?我已经阅读了很多相互矛盾的信息,我只能假设这是对不断发展的SyncFx版本的回应.没有直接的例子说明如何在两者上实现SQL to SQL Express和Change Tracking.另外,我试图从功能性SQLCE实现过渡到Express,尽可能少的更改.客户端已经能够使用任何类型的数据库,它只是需要更改的当前同步过程.

这是我发现的,但没有成功.我已经阅读了关于此事的每个StackOverflow响应,但仍然没有找到实现此功能的方法.

> Database Sync:SQL Server and SQL Express N-Tier with WCF:此MS示例适用于SyncOrchistrator,但提供了侧跟踪表和触发器.我无法以这样的方式修改它,即可以在客户端和服务器上使用更改跟踪.
> Sync framework with SQL Server 2008 Change Tracking:StephaneT在此建议,仅通过使用SQL Express样本同步提供程序和SyncFx 2.0技术的常规SQLCE方法,仅需要客户端表修改.不幸的是,这个示例SQL Express提供程序的所有链接似乎都被删除了,而来自JuneT甚至Liam Cavanagh的MSDN上的其他帖子建议继续使用新的官方SqlServerProvider而不是DbServerProvider的自定义版本.问题是这里没有任何样本实现,我无法通过反复试验来解决这个问题.
> Syncing SQL Server 2008 Databases over HTTP using WCF & Sync Framework:Raj提供了最好的示例(简单且易于转换为SQLCE进程),遗憾的是它还使用了似乎已从Internet上蒸发的SqlExpressClientSyncProvider.它还需要一个锚表来跟踪客户端,我想我可以逃脱它,因为我不允许修改“现有”表上的模式.

那么任何可以帮助我的例子.基本上我想通过代理将现有功能的SQLCE SyncFx移植到集成的SQL更改跟踪,使用SyncAgent到适用于SQL Express的版本,而无需更改现有的scheama或使用触发器.我还应该提一下,我大量使用过滤器参数,因为复制中有150个表,如果没有过滤器,它们会非常大.我读过一些引用说SqlExpressClientSyncProvider不支持过滤器,但我无法验证,因为我找不到对该代码仍然有用的引用.

也许刷新使用SqlServerSyncProvider的Raj示例

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

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

请注意,即使示例SqlExpressClientSyncProvider也使用触发器来跟踪逻辑删除表中的删除.同样,您需要在表中包含列以跟踪插入或更新行的时间(日期时间或时间戳列).

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

较新的SqlSyncProvider不支持Sql Change Tracking,因为它实现了自己的跟踪机制.较新的提供程序在对等场景中工作,因此它跟踪来自哪个副本的特定更改.

点赞