Sql server SQL CE和SQL Server之间的双向同步配置

Sql server SQL CE和SQL Server之间的双向同步配置,sql-server,synchronization,sql-server-ce,Sql Server,Synchronization,Sql Server Ce,我有一个本地SQL CE数据库,正在尝试使用Microsoft sync Framework同步到远程SQL Server数据库。我已经设置了CE数据库和服务器数据库,但是当我尝试使用SyncOrchestrator进行同步时,出现了一个错误存储过程“[tablename\u selectchanges]”不存在。 在配置本地和远程数据库时,我首先在适当的表上启用跟踪,然后执行以下操作: 行政长官: 服务器: var remoteScopeDescription = new DbSync

我有一个本地SQL CE数据库,正在尝试使用Microsoft sync Framework同步到远程SQL Server数据库。我已经设置了CE数据库和服务器数据库,但是当我尝试使用
SyncOrchestrator
进行同步时,出现了一个错误
存储过程“[tablename\u selectchanges]”不存在。

在配置本地和远程数据库时,我首先在适当的表上启用跟踪,然后执行以下操作:

行政长官:

服务器:

    var remoteScopeDescription = new DbSyncScopeDescription(scopeName);
    foreach (var table in tables) {
        remoteScopeDescription.Tables.Add(SqlCeSyncDescriptionBuilder.GetDescriptionForTable(table, localConnection));
    }

    var remoteDatabaseConfiguration = new SqlSyncScopeProvisioning(remoteConnection, remoteScopeDescription);
    if (!remoteDatabaseConfiguration.ScopeExists(scopeName)) {
        remoteDatabaseConfiguration.ObjectPrefix = "Sync";
        remoteDatabaseConfiguration.SetCreateTableDefault(DbSyncCreationOption.Skip);
        remoteDatabaseConfiguration.SetCreateTrackingTableDefault(DbSyncCreationOption.Create);
        remoteDatabaseConfiguration.SetCreateTriggersDefault(DbSyncCreationOption.Create);
        remoteDatabaseConfiguration.SetCreateProceduresDefault(DbSyncCreationOption.Skip);

        remoteDatabaseConfiguration.SetPopulateTrackingTableDefault(DbSyncCreationOption.Create);
        remoteDatabaseConfiguration.SetUseBulkProceduresDefault(true);
        remoteDatabaseConfiguration.Apply();
    }
如果删除
SetCreateProceduresDefault(DbSyncCreationOption.Skip)
行,这似乎会阻止创建此过程,则会出现以下错误:

列名“\uu sysChangeTxBsn”无效

列名“\uu sysInsertTxBsn”无效

列名“\uuu sysTrackingContext”无效

我是否设置了错误的资源调配?如果是,我如何修复此问题?或者这些错误是由其他原因引起的?

朱奈回答了这个问题,希望这能帮助其他遇到这个问题的人

我的问题是因为在向服务器添加表描述之前跟踪了我的更改,导致列名无效

    var remoteScopeDescription = new DbSyncScopeDescription(scopeName);
    foreach (var table in tables) {
        remoteScopeDescription.Tables.Add(SqlCeSyncDescriptionBuilder.GetDescriptionForTable(table, localConnection));
    }

    var remoteDatabaseConfiguration = new SqlSyncScopeProvisioning(remoteConnection, remoteScopeDescription);
    if (!remoteDatabaseConfiguration.ScopeExists(scopeName)) {
        remoteDatabaseConfiguration.ObjectPrefix = "Sync";
        remoteDatabaseConfiguration.SetCreateTableDefault(DbSyncCreationOption.Skip);
        remoteDatabaseConfiguration.SetCreateTrackingTableDefault(DbSyncCreationOption.Create);
        remoteDatabaseConfiguration.SetCreateTriggersDefault(DbSyncCreationOption.Create);
        remoteDatabaseConfiguration.SetCreateProceduresDefault(DbSyncCreationOption.Skip);

        remoteDatabaseConfiguration.SetPopulateTrackingTableDefault(DbSyncCreationOption.Create);
        remoteDatabaseConfiguration.SetUseBulkProceduresDefault(true);
        remoteDatabaseConfiguration.Apply();
    }