Sql server SQL CE和SQL Server之间的双向同步配置
我有一个本地SQL CE数据库,正在尝试使用Microsoft sync Framework同步到远程SQL Server数据库。我已经设置了CE数据库和服务器数据库,但是当我尝试使用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
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();
}