2012-07-12 1 views
1

je base de données sur le serveur - Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64). Configuré pour se synchroniser avec un client de base de données SQL Server Compact via WCF à l'aide de Microsoft Synchronization Services for ADO.NET.erreur dans la synchronisation de base de données SQL Server à l'aide SyncServices et WCF

Parfois, cette erreur a commencé à émerger:

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)

Les noms de tables sont différentes à chaque fois.

Dites-moi s'il vous plaît comment résoudre ce problème.

Merci.

Répondre

2

je crois que vous obtiendrez cette erreur si vous ne l'avez pas eu une synchronisation réussie au cours de la période de conservation que vous avez spécifié sur la base de données. Voir this link

Nous obtenons également cela occasionnellement lorsque le processus de synchronisation est incapable d'obtenir des données en raison d'une transaction ouverte ou d'un verrouillage d'un autre processus. (Je crois que la solution pour cela est à SET READ_COMMITTED_SNAPSHOT ON:

ALTER DATABASE yourdatabasenamehere 
SET READ_COMMITTED_SNAPSHOT ON 

GO 
) 
Questions connexes