Tsql @@DBTS和二进制格式化程序

Tsql @@DBTS和二进制格式化程序,tsql,microsoft-sync-framework,binaryformatter,Tsql,Microsoft Sync Framework,Binaryformatter,我已经编写了一个客户端,它使用SyncFramework来协调中心辐射式体系结构仓储应用程序中的数据整合。 在同步事务处理过程中,同步框架将使用@@DBTS值更新指定的锚定表,指示上次同步的处理时间和上载到服务器的时间。 作为这个场景的一部分,我想提供允许一个客户机代表另一个客户机中继数据的能力 这将用于一个客户可能无法与仓库联系的情况;它的数据库可以由有权访问仓库的客户机检索和同步(作为DVD或USB闪存介质上的数据库备份进行交换) 此理论的问题在于,在检索快照时,如果不在客户机数据库上设置S

我已经编写了一个客户端,它使用SyncFramework来协调中心辐射式体系结构仓储应用程序中的数据整合。 在同步事务处理过程中,同步框架将使用@@DBTS值更新指定的锚定表,指示上次同步的处理时间和上载到服务器的时间。 作为这个场景的一部分,我想提供允许一个客户机代表另一个客户机中继数据的能力

这将用于一个客户可能无法与仓库联系的情况;它的数据库可以由有权访问仓库的客户机检索和同步(作为DVD或USB闪存介质上的数据库备份进行交换)

此理论的问题在于,在检索快照时,如果不在客户机数据库上设置SentAnchor,则下次执行此过程时,将在第二次复制整个数据库

我想做的是,当我抓取客户端数据库的快照时,更新它的SentAnchor,这样下次我抓取副本时,同步框架就会知道它的SentAnchor,就好像它实际上与服务器通信一样

因此,我的第一个冲动是简单地更新锚表,将SentAnchor设置为@DBTS,但问题是同步框架以不同的格式插入相同的值,它首先通过BinaryFormatter运行它

所以,相同的内在值,不同的头,当我尝试用@DBTS的值更新时,SyncFramework错误试图将其从预期设置的格式转换回原来的格式

我想做的是通过TSQL语句进行设置,这与同步框架使用的@DBTS格式相同;如果可以在已执行的语句中执行单个SQL语句来创建备份,那么我不希望必须编写应用程序来执行单个SQL语句

类似于

USE MyDB 
GO 
BACKUP DATABASE MyDb 
TO DISK = 'F:\01032012MyDb.bak'
    WITH FORMAT,    
    NAME = '20120103 Full Backup of MyDb' 
GO 
UPDATE Anchor SET SentAnchor = @@DBTS 
GO
实际上,将上面的@DBTS替换为SyncFramework将使用的将相同的值输入到正确的fromat中所需的任何内容


服务器是2008R2 Express。

设置SentAnchor的问题是,您可能实际上错过了上载更改。通过设置该值,您已经有效地告诉同步框架,它已将更改发送到该值@@DBTS


我建议您改为使用SqlSyncProvider。

是的,它几乎与我最近发布的关于备份后清除的另一个问题相似。备份和设置此值之间可能发生了更改。问题是,这个系统不是为离线同步而设计的,我正在尝试反向工程一种方法,通过这种方法,在不提升在线工作的稳定系统的情况下实现同步。我正在重新思考整个项目,如果未来的问题与此相关,我会发回帖子,谢谢你的评论。