我正在使用 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()