1

我正在使用 Microsoft Sync Framework 2.1 将我的生产 SQL Server 2008 R2 db 与我的故障转移 SQL Server 2008 R2 Express 服务器同步,它工作了一段时间,然后在同步几天后,源(生产 SQL Server)开始用完内存(RAM),因为同步。

它没有停止运行或任何事情或导致网站事务失败,但如果生产盒上的内存不足,同步框架开始抛出以下错误。

任何人都看过这个或知道它为什么这样做以及是否有修复?

这是错误..

Microsoft.Synchronization.Data.DbSyncException:枚举更改的后台线程中发生意外异常。有关更多详细信息,请参阅内部异常。

System.Data.SqlClient.SqlException:资源池“内部”中的系统内存不足,无法运行此查询。

在 System.Data.SqlClient.SqlConnection.OnError(SqlException 异常,布尔 breakConnection,Action 1 完成,Int32 超时,Task& 任务,布尔 asyncWrite) 在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior,RunBehavior runBehavior,布尔 returnStream, String 方法)在 System.Data.SqlClient.SqlCommand.ExecuteReader( ) 在 System.Data.SqlClient.SqlCommand.DeriveParameters() 在 System.Data.SqlClient 的 System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior 行为,字符串方法).SqlCommandBuilder.DeriveParameters(SqlCommand 命令) 在 Microsoft.Synchronization.Data.ManagementUtils.DeriveParameters(SqlCommand 命令,IEnumerable`1 列)1 wrapCloseInAction)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
at System.Data.SqlClient.SqlDataReader.get_MetaData()
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource







在 Microsoft.Synchronization.Data.SqlServer.SqlSyncAdapter.SetCommandSessionParameters(IDbCommand command, String commandName)
在 Microsoft.Synchronization.Data.RelationalSyncProvider.EnumerateChangesInBatchesInternal(Object batchProducer)
--- 内部异常堆栈跟踪结束---

在 Microsoft.Synchronization.Data.RelationalSyncProvider.GetChanges (DbSyncScopeMetadata scopeMetadata, DbSyncSession DbSyncSession, UInt32 memoryBatchSize
)
在 Microsoft.Synchronization.Data.RelationalSyncProvider.GetChanges(DbSyncScopeMetadata scopeMetadata, DbSyncSession DbSyncSession, UInt32 memoryBatchSize) 在 Microsoft.Synchronization.Data.RelationalSyncProvider.ConsumeBatchFromProducer(DbSyncScopeMetadata scopeMetadata
) .Data.RelationalSyncProvider.GetChangeBatch(UInt32 batchSize, SyncKnowledge destinationKnowledge, Object& changeDataRetriever)
在 Microsoft.Synchronization.KnowledgeProviderProxy.GetChangeBatch(UInt32 dwBatchSize, ISyncKnowledge pSyncKnowledge, ISyncChangeBatch& ppChangeBatch, Object& ppUnkDataRetriever)
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)
在 Microsoft.Synchronization.KnowledgeSyncOrchestrator.DoOneWayKnowledgeSync(SyncDataConverter sourceConverter、SyncDataConverter destinationConverter、SyncProvider sourceProvider、SyncProvider destinationProvider、Int32& changesApplied、Int32& changesFailed)
在 Microsoft.Synchronization.KnowledgeSyncOrchestrator.Synchronize()
在 Microsoft.Synchronization.SyncOrchestrator.Synchronize()

4

1 回答 1

1

尝试通过设置 MemoryDataCacheSize 属性来启用批处理。

于 2012-12-29T01:20:32.890 回答