Template: Generic Hotfix
BUG #: 149290 (Content Maintenance)VSTS Bug #: 767547
Symptômes
Prenons l’exemple du scénario suivant :
-
Vous installez Microsoft SQL Server Compact 3.5 sur un ordinateur.
-
Vous créez un abonné dans SQL Server Compact 3.5.
-
Vous téléchargez nombre de lignes à partir d’une publication de fusion à une base de données tandis que l’éditeur se synchronise avec l’abonné. Les lignes contiennent de nombreux articles et les contraintes.
Dans ce scénario, un message d’erreur semblable au suivant est enregistré dans le journal des erreurs SQL Server :
Erreur de System.Data.SqlServerCe.SqlCeExceptionNative = 0, HRESULT =-2147217873, le Message d’erreur : une valeur spécifiée a violé les contraintes d’intégrité pour une colonne ou une table.
RemarqueCe problème se produit dans le système d’exploitation 32 bits et le système d’exploitation 64 bits.
This issue usually occurs when the following conditions are true:
-
The publisher synchronizes under a heavy workload.
-
The articles of rows are downloaded out of sequential order.
Cause
Ce problème se produit car un ID exchange non valide est utilisé. Lorsque le nombre de lignes pour le téléchargement est dans un état d’attente, SQL Compact Agent du Client appelle une méthode de nouvelles tentatives qui utilise un code d’échange non valide. Par conséquent, le problème mentionné dans la section « Symptômes » se produit.
This issue occurs because the guidRetries value is not initialized to a GUID value.
Note The AddRetryMsg() method uses the guidRetries value to generate an exchange ID for a retry message.
When many articles and constraints exists, the AddRetryMsg() method may run multiple times. However, the guidRetries value is not initialize to a GUID value, and the guidRetries values are the same when the AddRetryMsg() method runs multiple times on a computer that is running a 32-bit operating system.
Therefore, SQL Compact Client Agent uses the same exchange ID to create all new requests, and an SSCE_M_RSCBWITHSAMEEXCHANGEID 29005 Server Agent error is generated. Additionally, you receive the following error message:
A replication session control block already exists. The IIS server was probably shut down during a synchronization process. Try synchronizing again.
Résolution
Le correctif qui résout ce problème est inclus dans le package de mise à jour cumulative 5 pour SQL Server Compact 3.5 Service Pack 2 (SP2). Pour plus d’informations sur la façon d’obtenir le package de mise à jour cumulative 5 pour SQL Server Compact 3.5 SP2, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft :
2553608 Mise à jour cumulative 5 pour SQL Server Compact 3.5 Service Pack 2
Author: jannaw
Writer: v-yipli
Tech Reviewer: panarasi;rtandon;ambrishm;babuk;atisagar;jannaw
Editor: v-lynan