Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 Microsoft Sync Framework 2.0:是否可以在同一同步事务(客户端上载服务器更新)场景中更新列值?_Sql Server 2005_Triggers_Microsoft Sync Framework - Fatal编程技术网

Sql server 2005 Microsoft Sync Framework 2.0:是否可以在同一同步事务(客户端上载服务器更新)场景中更新列值?

Sql server 2005 Microsoft Sync Framework 2.0:是否可以在同一同步事务(客户端上载服务器更新)场景中更新列值?,sql-server-2005,triggers,microsoft-sync-framework,Sql Server 2005,Triggers,Microsoft Sync Framework,比如说,我有一个表,有两列OrderId和OrderDate。在最初的设计中,OrderId是代理项,这对最终用户来说仍然有一定的意义,因为他们仍然喜欢使用IDENTITY integer引用OrderNumber 12345 PK。因为我们开始采用SyncFx并支持离线客户端创建场景,所以我们决定添加一个新的列唯一标识符GUID作为新的PK 在我以前的工作V1.0实现中,OrderId将被分配为负值-1、-2,以此类推,用于脱机创建的记录。同步发生时,OrderId将被重新分配“下一个”编号。

比如说,我有一个表,有两列OrderId和OrderDate。在最初的设计中,OrderId是代理项,这对最终用户来说仍然有一定的意义,因为他们仍然喜欢使用IDENTITY integer引用OrderNumber 12345 PK。因为我们开始采用SyncFx并支持离线客户端创建场景,所以我们决定添加一个新的列唯一标识符GUID作为新的PK

在我以前的工作V1.0实现中,OrderId将被分配为负值-1、-2,以此类推,用于脱机创建的记录。同步发生时,OrderId将被重新分配“下一个”编号。服务器将对表中的OrderId列执行max+1。该逻辑作为存储过程实现,并将在insert触发器期间调用

Update INSERTED set OrderId = b.NextNumber
FROM INSERTED a,
(
    SELECT SyncGUID, ROW_NUMBER() OVER (ORDER BY SyncGUID) + (SELECT MAX(OrderId) MaxID FROM Order) as NextNumber
    --select * 
    FROm Order 
    where OrderId <= 0
) b
where a.SyncGUID = b.SyncGUID
但是,在V2.0中,在syc之后,在服务器端创建记录,并且OrderId从-1更新为“next”编号;但是,该更新更改没有下载到客户端。我在想

我正在研究_selectchanges存储过程中的逻辑。我好像 我可能需要手动操作 [本地\u更新\u对等\u时间戳]以便枚举拾取 怎么了?! 由于整个逻辑在insert触发器中运行 记录仍然没有提交到实际表中,我也是 想知道是否有可能再次调用枚举 将记录提交到服务器表之后。不打电话 另一个同步 在这种情况下,INSERT而非INSERT触发器会提供帮助吗?! 我试了几次,但用我有限的知识做不到。
您的更改未被下载,因为它是在同步的触发器内完成的,因此同步元数据未得到更新以显示发生了更改

我建议您尝试在自己的insert触发器中实现代码,而不是在Sync创建的触发器中完成工作

此外,您也不希望使用INSTEAD OF触发器,因为这将取代同步框架为其更改跟踪所需的工作

通过以这种方式创建您自己的触发器,您的触发器将插入更改,并且在下一次同步该表时,该更改将被拾取