У меня есть локальная база данных 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'.
Неправильно ли настроена моя подготовка, и если да, как я могу это исправить?Или эти ошибки могут быть вызваны чем-то другим?