Двунаправленная синхронизация между SQL CE и SQL Server - PullRequest
2 голосов
/ 29 ноября 2011

У меня есть локальная база данных SQL CE, и я пытаюсь выполнить синхронизацию с удаленной базой данных SQL Server с помощью Microsoft Sync Framework.Я подготовил базы данных CE и Server, но при попытке синхронизации, используя SyncOrchestrator, я получаю сообщение об ошибке The stored procedure '[tablename_selectchanges]' doesn't exist..

При подготовке локальных и удаленных баз данных я сначала включаю отслеживаниесоответствующие таблицы, затем выполните следующие действия:

CE:

    var localScopeDescription = new DbSyncScopeDescription(scopeName);
    foreach (var table in tables) {
        localScopeDescription.Tables.Add(SqlSyncDescriptionBuilder.GetDescriptionForTable(table, remoteConnection));
    }

    var localDatabaseConfiguration = new SqlCeSyncScopeProvisioning(localConnection, localScopeDescription);
    if (!localDatabaseConfiguration.ScopeExists(scopeName)) {
        localDatabaseConfiguration.ObjectPrefix = "Sync";
        localDatabaseConfiguration.SetCreateTableDefault(DbSyncCreationOption.Skip);
        localDatabaseConfiguration.Apply();
    }

Сервер:

    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), что, по-видимому, мешаетПри создании этой процедуры я получаю следующую ошибку:

Неверное имя столбца '__sysChangeTxBsn'.

Неверное имя столбца '__sysInsertTxBsn'.

Неверное имя столбца'__sysTrackingContext'.

Неправильно ли настроена моя подготовка, и если да, как я могу это исправить?Или эти ошибки могут быть вызваны чем-то другим?

1 Ответ

1 голос
/ 29 ноября 2011

На вопрос был дан ответ здесь от JuneT, надеюсь, это поможет кому-то еще, кто столкнулся с этой проблемой.

Моя проблема была вызвана отслеживанием моих изменений до того, как я добавил описания таблиц на сервер,вызывая неверные имена столбцов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...