SQL Server Express上的表的Sync Framework BulkInsertCommand

时间:2011-11-14 16:25:39

标签: sql-server-express microsoft-sync-framework

我通过WCF使用同步,我的服务器和客户端是SQL Server EXPRESS 2008,(用于开发我使用sql express的一个实例)

我在服务器上添加了同步过滤器模板,并根据此模板创建了所有范围。客户端和服务器端的表结构相同。当我首先启动我的应用程序时,所有系统表,SP,都在两侧创建了触发器。

但在同步期间(localProvider是服务器,RemoteProvider客户端)

 SyncOrchestrator orchestrator = new SyncOrchestrator
            {
                LocalProvider = localProvider,
                RemoteProvider = remoteProvider,
                Direction = SyncDirectionOrder.Download
            };

过程我得到了下一个例外:

  

{“无法为表'MySyncTable'执行命令'BulkInsertCommand';事务已回滚。请确保命令语法正确。”}

内部例外:

  

{“将同步后的nvarchar值转换为数据类型位时转换失败。\ r \ n}表值参数\”@ changeTable \“的数据不符合参数的表类型。 r \ n声明已经终止。“}

至于我,看起来我有不同的表结构,我在服务器端查看BulkInsertCommand并且没有发现任何错误,

是否与过滤器范围或同步生成此错误的原因有关?

感谢。

2 个答案:

答案 0 :(得分:1)

您之前是否在同一组表上配置了不同的范围?

您是否手动清理Sync Framework生成的对象而不是使用取消配置API?

如果你做了上述任何一种情况,可能会使用过时的UDT。

如果您没有在数据库上定义任何其他范围,请尝试DeprovisionStore取消配置整个数据库并删除所有Sync Framwork创建的对象。

如果您有其他范围,请使用DeprovisionScope取消配置与问题表关联的所有范围。

答案 1 :(得分:0)

我清除了与DeprovisionStore的同步信息并重新创建了范围,现在所有工作....谢谢。