ApplyChangeFailed事件不被触发 [英] ApplyChangeFailed 事件不被触发

查看:152
本文介绍了ApplyChangeFailed事件不被触发的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

从Sql Server 2005到Sql Server 2005的同步(单向上传)是正常的,当目标数据库为Oracle时,(单向上传)不会触发ApplyChangeFailed事件。


SQL同步时的信息:


VERBOSE,WcfSvcHost,8,06 / 16/2010 13:40:41:343,    RowId:orders-1 UV:1,78012 CV:1,78011 IsTomb:False

VERBOSE,WcfSvcHost,8,06 / 16/2010 13:40:41:343,    ;使用PK更新行:order_id =" 1"  on peer2

INFO   ,WcfSvcHost,8,06 / 16/2010 13:40:41:359,乐观变化应用程序失败

VERBOSE,WcfSvcHost,8,06 / 16/2010 13:40:41:359,  ;  执行命令:orders_SelectRow

VERBOSE,WcfSvcHost,8,06 / 16/2010 13:40:41:359,      参数:order_id值:1

VERBOSE,WcfSvcHost,8,06 / 16/2010 13:40:41:359,      参数:@sync_scope_local_id价值:12

VERBOSE,WcfSvcHost,8,06 / 16/2010 13:40:41:359,

VERBOSE,WcfSvcHost,8 ,06/16/2010 13:40:41:359,    RowId:orders-1 UV:1,78011 CV:1,78011 IsTomb:False

VERBOSE,WcfSvcHost,8,06 / 16/2010 13:40:41:359,    ;         检查冲突。

VERBOSE,WcfSvcHost,8,06 / 16/2010 13:40:41:359,           ;  远程对等体包含本地更改。返回RemoteSupersedes。

VERBOSE,WcfSvcHost,8,06 / 16/2010 13:40:41:375,   执行命令:orders_Update


VERBOSE,WcfSvcHost,8,06 / 16/2010 13:40:41:375,      参数:order_id值:1

VERBOSE,WcfSvcHost,8,06 / 16/2010 13:40:41:375,      参数:order_date价值:2009-10-9 0:00:00

VERBOSE,WcfSvcHost,8,06 / 16/2010 13:40:41:375,       参数:@sync_min_timestamp价值:86021

VERBOSE,WcfSvcHost,8,06 / 16/2010 13:40:41:375,      参数:@sync_row_count值:跳过,因为未输入/输入输出

VERBOSE,WcfSvcHost,8,06 / 16/2010 13:40:41:375,       ;参数:@sync_force_write值:0

VERBOSE,WcfSvcHost,8,06 / 16/2010 13:40:41:375,   受影响的行:1

VERBOSE,WcfSvcHost,8,06 / 16/2010 13:40:41:375,   执行命令:orders_UpdateMetadata

VERBOSE,WcfSvcHost,8,06 / 16/2010 13:40:41:375,      参数:order_id值:1

VERBOSE,WcfSvcHost,8,06 / 16/2010 13:40:41:375,      参数:@sync_scope_local_id值:12

VERBOSE,WcfSvcHost,8,06 / 16/2010 13:40:41:375,      参数:@sync_row_timestamp价值:86021

VERBOSE,WcfSvcHost,8,06 / 16/2010 13:40:41:375,      参数:@sync_create_peer_key值:1

VERBOSE,WcfSvcHost,8,06 / 16/2010 13:40:41:375,      参数:@sync_create_peer_timestamp价值:78011

VERBOSE,WcfSvcHost,8,06 / 16/2010 13:40:41:375,      参数:@sync_update_peer_key值:1

VERBOSE,WcfSvcHost,8,06 / 16/2010 13:40:41:375,      参数:@sync_update_peer_timestamp价值:78012

VERBOSE,WcfSvcHost,8,06 / 16/2010 13:40:41:375,      参数:@sync_row_is_tombstone值:0

VERBOSE,WcfSvcHost,8,06 / 16/2010 13:40:41:375,      参数:@sync_check_concurrency值:0

VERBOSE,WcfSvcHost,8,06 / 16/2010 13:40:41:375,      参数:@sync_row_count值:自未输入/输入输出后跳过

VERBOSE,WcfSvcHost,8,06 / 16/2010 13:40:41:375,   受影响的行:1


Oracle同步时的信息:


VERBOSE,WcfSvcHost,8,06 / 17/2010 07:50:46:703 ,    RowId:orders-9 UV:1,82028 CV:1,82027 IsTomb:False

VERBOSE,WcfSvcHost,8,06 / 17/2010 07:50:46:703,    ;使用PK更新行:ORDER_ID =" 9"  on


INFO   ,WcfSvcHost,8,06 / 17/2010 07:50:46:703,乐观变更申请失败

错误  ,WcfSvcHost,8,06 / 17/2010 07:50:46:703,枚举更改时捕获异常

Microsoft.Synchronization.Data.DbSyncException:找不到要为命令参数“ selectedRow”设置的值。请确保要同步的表的架构是一致的,并且确认此作用域的配置正确。

  在Microsoft.Synchronization.Data.DbChangeHandler.SetColumnParameters(IDbCommand命令,SyncRowMetadata rowMetadata)

  在Microsoft.Synchronization.Data.DbChangeHandler.ExecuteSelectRowCommand(SyncRowMetadata rowMetadata,DataTable& dataTable)


ERROR  ,WcfSvcHost,8,06 / 17/2010 07:50:46:718,SelectRowCommand期间捕获异常

Microsoft.Synchronization.Data.DbSyncException:找不到要为命令参数“ selectedRow”设置的确。要确保要同步的表的架构是一致的,并且确认此作用域的配置正确。

  在Microsoft.Synchronization.Data.DbChangeHandler.SetColumnParameters(IDbCommand命令,SyncRowMetadata rowMetadata)

  在Microsoft.Synchronization.Data.DbChangeHandler.ExecuteSelectRowCommand(SyncRowMetadata rowMetadata,DataTable& dataTable)

  在Microsoft.Synchronization.Data.DbChangeHandler.ApplyUpdate()


VERBOSE,WcfSvcHost,8,06 / 17/2010 07:50:46:718,       提高应用元数据失败的事件


 


Oracle数据库时,ApplyChangeFailed不会被触发,而是直接触发ApplyMetadataFailed。


不知道是什么原因?


 

解决方案

来自跟踪,冲突机制已经启动,正在执行 SelectRowCommand
。但是,由于"selectedRow",执行命令时出错。参数未设置。之后,由于上面的失败,引发了ApplyMetadataFailed。


因此请仔细检查是否引发了ApplyChangeFailed,并检查selectRowCommand的存储过程的调用,看看是否一切正确。 / p>


从Sql Server 2005 到Sql Server 2005的同步(单向上传)是正常的,当目标数据库为Oracle时,(单向上传)不会触发ApplyChangeFailed事件。

SQL同步时的信息:

VERBOSE, WcfSvcHost, 8, 06/16/2010 13:40:41:343,    RowId: orders-1 UV: 1,78012 CV: 1,78011 IsTomb: False
VERBOSE, WcfSvcHost, 8, 06/16/2010 13:40:41:343,    Updating row with PK: order_id="1"  on peer2
INFO   , WcfSvcHost, 8, 06/16/2010 13:40:41:359, Optimistic change application failed
VERBOSE, WcfSvcHost, 8, 06/16/2010 13:40:41:359,    Executing Command: orders_SelectRow
VERBOSE, WcfSvcHost, 8, 06/16/2010 13:40:41:359,       Parameter: order_id Value: 1
VERBOSE, WcfSvcHost, 8, 06/16/2010 13:40:41:359,       Parameter: @sync_scope_local_id Value: 12
VERBOSE, WcfSvcHost, 8, 06/16/2010 13:40:41:359,
VERBOSE, WcfSvcHost, 8, 06/16/2010 13:40:41:359,    RowId: orders-1 UV: 1,78011 CV: 1,78011 IsTomb: False
VERBOSE, WcfSvcHost, 8, 06/16/2010 13:40:41:359,             Checking for conflict.
VERBOSE, WcfSvcHost, 8, 06/16/2010 13:40:41:359,             Remote peer contains local change. Returning RemoteSupersedes.
VERBOSE, WcfSvcHost, 8, 06/16/2010 13:40:41:375,    Executing Command: orders_Update

VERBOSE, WcfSvcHost, 8, 06/16/2010 13:40:41:375,       Parameter: order_id Value: 1
VERBOSE, WcfSvcHost, 8, 06/16/2010 13:40:41:375,       Parameter: order_date Value: 2009-10-9 0:00:00
VERBOSE, WcfSvcHost, 8, 06/16/2010 13:40:41:375,       Parameter: @sync_min_timestamp Value: 86021
VERBOSE, WcfSvcHost, 8, 06/16/2010 13:40:41:375,       Parameter: @sync_row_count Value: Skipped since Not Input/InputOutput
VERBOSE, WcfSvcHost, 8, 06/16/2010 13:40:41:375,       Parameter: @sync_force_write Value: 0
VERBOSE, WcfSvcHost, 8, 06/16/2010 13:40:41:375,    Rows affected: 1
VERBOSE, WcfSvcHost, 8, 06/16/2010 13:40:41:375,    Executing Command: orders_UpdateMetadata
VERBOSE, WcfSvcHost, 8, 06/16/2010 13:40:41:375,       Parameter: order_id Value: 1
VERBOSE, WcfSvcHost, 8, 06/16/2010 13:40:41:375,       Parameter: @sync_scope_local_id Value: 12
VERBOSE, WcfSvcHost, 8, 06/16/2010 13:40:41:375,       Parameter: @sync_row_timestamp Value: 86021
VERBOSE, WcfSvcHost, 8, 06/16/2010 13:40:41:375,       Parameter: @sync_create_peer_key Value: 1
VERBOSE, WcfSvcHost, 8, 06/16/2010 13:40:41:375,       Parameter: @sync_create_peer_timestamp Value: 78011
VERBOSE, WcfSvcHost, 8, 06/16/2010 13:40:41:375,       Parameter: @sync_update_peer_key Value: 1
VERBOSE, WcfSvcHost, 8, 06/16/2010 13:40:41:375,       Parameter: @sync_update_peer_timestamp Value: 78012
VERBOSE, WcfSvcHost, 8, 06/16/2010 13:40:41:375,       Parameter: @sync_row_is_tombstone Value: 0
VERBOSE, WcfSvcHost, 8, 06/16/2010 13:40:41:375,       Parameter: @sync_check_concurrency Value: 0
VERBOSE, WcfSvcHost, 8, 06/16/2010 13:40:41:375,       Parameter: @sync_row_count Value: Skipped since Not Input/InputOutput
VERBOSE, WcfSvcHost, 8, 06/16/2010 13:40:41:375,    Rows affected: 1

Oracle同步时的信息:

VERBOSE, WcfSvcHost, 8, 06/17/2010 07:50:46:703,    RowId: orders-9 UV: 1,82028 CV: 1,82027 IsTomb: False
VERBOSE, WcfSvcHost, 8, 06/17/2010 07:50:46:703,    Updating row with PK: ORDER_ID="9"  on
INFO   , WcfSvcHost, 8, 06/17/2010 07:50:46:703, Optimistic change application failed
ERROR  , WcfSvcHost, 8, 06/17/2010 07:50:46:703, Caught exception while enumerating changes
Microsoft.Synchronization.Data.DbSyncException: 找不到要为命令参数“selectedRow”设置的值。请确保要同步的表的架构是一致的,并且确保此作用域的配置正确。
   在 Microsoft.Synchronization.Data.DbChangeHandler.SetColumnParameters(IDbCommand command, SyncRowMetadata rowMetadata)
   在 Microsoft.Synchronization.Data.DbChangeHandler.ExecuteSelectRowCommand(SyncRowMetadata rowMetadata, DataTable& dataTable)

ERROR  , WcfSvcHost, 8, 06/17/2010 07:50:46:718, Caught Exception during SelectRowCommand
Microsoft.Synchronization.Data.DbSyncException: 找不到要为命令参数“selectedRow”设置的值。请确保要同步的表的架构是一致的,并且确保此作用域的配置正确。
   在 Microsoft.Synchronization.Data.DbChangeHandler.SetColumnParameters(IDbCommand command, SyncRowMetadata rowMetadata)
   在 Microsoft.Synchronization.Data.DbChangeHandler.ExecuteSelectRowCommand(SyncRowMetadata rowMetadata, DataTable& dataTable)
   在 Microsoft.Synchronization.Data.DbChangeHandler.ApplyUpdate()

VERBOSE, WcfSvcHost, 8, 06/17/2010 07:50:46:718,       Raising Apply Metadata Failed Event

 

Oracle数据库时,ApplyChangeFailed不会被触发,而是直接触发ApplyMetadataFailed。

不知道是什么原因?

 

解决方案

From the trace, the conflict mechanism has kicked in, the SelectRowCommand is being executed. However, there is a error in executing the command, due to "selectedRow" parameter is not set. Later, an ApplyMetadataFailed is raised due to the failure above.

So please double check whether ApplyChangeFailed is raised and check the invocation of the stored procedure for the selectRowCommand and see whether everything is correct.


这篇关于ApplyChangeFailed事件不被触发的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆