2016-09-29 40 views
1

在过去的几个月中,我一直在使用Microsoft Sync Framework,我在数据库中添加了新列,而且在本地数据库和我的服务器数据库之间没有同步问题。最近,我加入了一些新的列在平板电脑,我得到一个错误,而同步特定表:Microsoft Sync Framework'Expected column'error

Expected column 'foo' was not found on the DataTable to be applied to the destination table 'MyTable'. 
Parameter name: dataTable 
System.ArgumentException: Expected column 'foo' was not found on the DataTable to be applied to the destination table 'MyTable'. 
Parameter name: dataTable 
    at Microsoft.Synchronization.Data.SqlServer.SqlChangeHandler.SetColumnOrder(DataTable dataTable, Int32& updateKeyOrdinal, Int32& createKeyOrdinal) 
    at Microsoft.Synchronization.Data.SqlServer.SqlChangeHandler.ApplyBulkChanges(DataTable dataTable) 
    at Microsoft.Synchronization.Data.RelationalSyncProvider.ApplyChangesInternal(DbSyncScopeMetadata scopeMetadata, IDbTransaction transaction, FailedDeleteDelegate_type failedDeleteDelegate, DataSet dataSet, ChangeApplicationType applyType) 
    at Microsoft.Synchronization.Data.RelationalSyncProvider.ApplyChanges(DbSyncScopeMetadata scopeMetadata, IDbTransaction applyTransaction, DataSet dataSet, DbSyncSession DbSyncSession, Boolean commitTransaction, FailedDeleteDelegate_type failedDeleteDelegate, String batchFileName, ChangeApplicationAction& action) 
    at Microsoft.Synchronization.Data.RelationalSyncProvider.SingleTransactionApplyChangesAdapter.Apply(DataSet dataSet, Boolean commitTransaction, FailedDeleteDelegate_type failedDeleteDelegate, String batchFileName, ChangeApplicationAction& action) 
    at Microsoft.Synchronization.Data.RelationalSyncProvider.ApplyChanges(DbSyncScopeMetadata scopeMetadata, DataSet dataSet, DbSyncSession dbSyncSession, Boolean commitTransaction) 
    at Microsoft.Synchronization.Data.RelationalSyncProvider.ProcessChangeBatch(ConflictResolutionPolicy resolutionPolicy, ChangeBatch sourceChanges, Object changeDataRetriever, SyncCallbacks syncCallbacks, SyncSessionStatistics sessionStatistics) 
    at Microsoft.Synchronization.KnowledgeProviderProxy.ProcessChangeBatch(CONFLICT_RESOLUTION_POLICY resolutionPolicy, ISyncChangeBatch pSourceChangeManager, Object pUnkDataRetriever, ISyncCallback pCallback, _SYNC_SESSION_STATISTICS& pSyncSessionStatistics) 
    at Microsoft.Synchronization.CoreInterop.ISyncSession.Start(CONFLICT_RESOLUTION_POLICY resolutionPolicy, _SYNC_SESSION_STATISTICS& pSyncSessionStatistics) 
    at Microsoft.Synchronization.KnowledgeSyncOrchestrator.DoOneWaySyncHelper(SyncIdFormatGroup sourceIdFormats, SyncIdFormatGroup destinationIdFormats, KnowledgeSyncProviderConfiguration destinationConfiguration, SyncCallbacks DestinationCallbacks, ISyncProvider sourceProxy, ISyncProvider destinationProxy, ChangeDataAdapter callbackChangeDataAdapter, SyncDataConverter conflictDataConverter, Int32& changesApplied, Int32& changesFailed) 
    at Microsoft.Synchronization.KnowledgeSyncOrchestrator.DoOneWayKnowledgeSync(SyncDataConverter sourceConverter, SyncDataConverter destinationConverter, SyncProvider sourceProvider, SyncProvider destinationProvider, Int32& changesApplied, Int32& changesFailed) 
    at Microsoft.Synchronization.KnowledgeSyncOrchestrator.Synchronize() 
    at Microsoft.Synchronization.SyncOrchestrator.Synchronize() 

我试图从服务器整个表下载到我的本地数据库。这一直工作,但现在我突然得到这个错误。我的表MyTable在我的本地数据库和我的服务器数据库中都有foo列。这个错误背后的原因是什么?

+0

我被困在同一点。运气好的话? –

回答

0

我找不到任何解决方案,所以我最终创建了一个新的数据库,运行迁移并从旧数据库导入所有数据。这个问题似乎在数据库迁移历史的某个地方。

0

当您提供一个表时,会创建一个相应的UDF(TVF)来表示该表。运行迁移时,这可能与基表不同步。

相关问题