我通过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
并且没有发现任何错误,
是否与过滤器范围或同步生成此错误的原因有关?
感谢。
答案 0 :(得分:1)
您之前是否在同一组表上配置了不同的范围?
您是否手动清理Sync Framework生成的对象而不是使用取消配置API?
如果你做了上述任何一种情况,可能会使用过时的UDT。
如果您没有在数据库上定义任何其他范围,请尝试DeprovisionStore取消配置整个数据库并删除所有Sync Framwork创建的对象。
如果您有其他范围,请使用DeprovisionScope取消配置与问题表关联的所有范围。
答案 1 :(得分:0)
我清除了与DeprovisionStore的同步信息并重新创建了范围,现在所有工作....谢谢。