2012-07-12 2 views
1

Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) 서버에 데이터베이스가 있습니다. ADO.NET 용 Microsoft Synchronization Services를 사용하여 WCF를 통해 SQL Server Compact 데이터베이스 클라이언트와 동기화하도록 구성되었습니다.SyncServices 및 WCF를 사용하는 SQL Server 데이터베이스 동기화 오류

Microsoft.Synchronization.Data.SyncException: Unable to enumerate changes at the DbServerSyncProvider for table 'TABLE NAME' in synchronization group 'GROUP NAME'.

---> System.Data.SqlClient.SqlException: A transport-level error has occurred when receiving results from the server (provider: TCP Provider, error: 0 - The semaphore timeout period has expired.)

at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, UInt32 error)
at System.Data.SqlClient.TdsParserStateObject.ReadSni(DbAsyncResult asyncResult, TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket()
at System.Data.SqlClient.TdsParserStateObject.ReadBuffer()
at System.Data.SqlClient.TdsParserStateObject.ReadByte()
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
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)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader()
at Microsoft.Synchronization.Data.Server.DbServerSyncProvider.EnumerateChanges(SyncGroupMetadata groupMetadata, SyncSession syncSession, IDbTransaction transaction, EnumerateChangeType changeType, SyncSchema traceSchema)

테이블 이름마다 다르다 :

때때로이 오류가 등장하기 시작했다.

이 문제를 해결하는 방법을 알려주십시오.

감사합니다.

답변

2

데이터베이스에 지정한 보존 기간 동안 성공적으로 동기화하지 않은 경우이 오류가 발생합니다. this link

동기화 프로세스가 열려있는 트랜잭션 또는 다른 프로세스로 인해 데이터를 가져올 수없는 경우가 종종 있습니다. (이에 대한 해결책은 SET READ_COMMITTED_SNAPSHOT ON 일 것입니다 :

ALTER DATABASE yourdatabasenamehere 
SET READ_COMMITTED_SNAPSHOT ON 

GO 
)