【发布时间】:2012-12-28 06:25:06
【问题描述】:
我正在使用 Microsoft Sync Framework 2.1 将我的生产 SQL Server 2008 R2 数据库与我的故障转移 SQL Server 2008 R2 Express 服务器同步,它工作了一段时间,然后在同步源(生产 SQL Server)几天后strong>由于同步而开始耗尽内存(RAM)。
它没有停止运行或任何事情或导致网站交易失败,但如果生产盒上的内存不足,同步框架开始抛出以下错误。
任何人都看到过这个或知道它为什么这样做以及是否有修复?
这是错误..
Microsoft.Synchronization.Data.DbSyncException:正在枚举的后台线程中发生意外异常 变化。有关详细信息,请参阅内部异常。
System.Data.SqlClient.SqlException:系统不足 资源池“内部”中的内存来运行此查询。
在 System.Data.SqlClient.SqlConnection.OnError(SqlException 异常, Boolean breakConnection, Action
1 wrapCloseInAction)1 完成, Int32 超时, Task& 任务, 布尔 asyncWrite)
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
在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior、RunBehavior、runBehavior、布尔返回流、字符串 方法)
在 System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior 行为,字符串方法)
在 System.Data.SqlClient.SqlCommand.ExecuteReader()
在 System.Data.SqlClient.SqlCommand.DeriveParameters()
在 System.Data.SqlClient.SqlCommandBuilder.DeriveParameters(SqlCommand 命令)
在 Microsoft.Synchronization.Data.ManagementUtils.DeriveParameters(SqlCommand 命令,IEnumerable`1 列)
在 Microsoft.Synchronization.Data.SqlServer.SqlSyncAdapter.SetCommandSessionParameters(IDbCommand 命令,字符串命令名)
在 Microsoft.Synchronization.Data.RelationalSyncProvider.EnumerateChangesInBatchesInternal(对象 批量生产者)
--- 内部异常堆栈跟踪结束 ---在 Microsoft.Synchronization.Data.DbSyncBatchProducer.DequeueBatch()
在 Microsoft.Synchronization.Data.RelationalSyncProvider.ConsumeBatchFromProducer(DbSyncScopeMetadata 范围元数据)
在 Microsoft.Synchronization.Data.RelationalSyncProvider.GetChanges(DbSyncScopeMetadata scopeMetadata, DbSyncSession DbSyncSession, UInt32 memoryBatchSize)
在 Microsoft.Synchronization.Data.RelationalSyncProvider.GetChangeBatch(UInt32 batchSize, SyncKnowledge destinationKnowledge, Object& 更改数据检索器)
在 Microsoft.Synchronization.KnowledgeProviderProxy.GetChangeBatch(UInt32 dwBatchSize, ISyncKnowledge pSyncKnowledge, ISyncChangeBatch& ppChangeBatch、对象和 ppUnkDataRetriever)
在 Microsoft.Synchronization.CoreInterop.ISyncSession.Start(CONFLICT_RESOLUTION_POLICY resolutionPolicy, _SYNC_SESSION_STATISTICS& pSyncSessionStatistics)
在 Microsoft.Synchronization.KnowledgeSyncOrchestrator.DoOneWaySyncHelper(SyncIdFormatGroup sourceIdFormats, SyncIdFormatGroup destinationIdFormats, KnowledgeSyncProviderConfiguration 目的地配置, SyncCallbacks DestinationCallbacks,ISyncProvider sourceProxy, ISyncProviderdestinationProxy,ChangeDataAdapter callbackChangeDataAdapter, SyncDataConverter conflictDataConverter, Int32& changesApplied, Int32& changesFailed)
在 Microsoft.Synchronization.KnowledgeSyncOrchestrator.DoOneWayKnowledgeSync(SyncDataConverter sourceConverter, SyncDataConverter destinationConverter, SyncProvider sourceProvider, SyncProviderdestinationProvider, Int32& changesApplied, Int32& changesFailed)
在 Microsoft.Synchronization.KnowledgeSyncOrchestrator.Synchronize()
在 Microsoft.Synchronization.SyncOrchestrator.Synchronize()
【问题讨论】:
-
注意:如果我重新启动生产 SQL 框,它会再次开始工作。但我想知道它为什么会发生以及是否有修复(补丁明智或设置明智)
标签: sql-server-2008-r2 microsoft-sync-framework failover