CORRECTIF : l’erreur « une valeur spécifiée a violé les contraintes d’intégrité pour une colonne ou une table » si la publication de fusion contient de nombreux articles et les contraintes de SQL Server Compact 3.5

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

Besoin d’aide ?

Développez vos compétences
Découvrez des formations
Accédez aux nouvelles fonctionnalités en avant-première
Rejoindre Microsoft Insider

Ces informations vous ont-elles été utiles ?

Nous vous remercions pour vos commentaires.

Merci pour vos commentaires. Il serait vraisemblablement utile pour vous de contacter l’un de nos agents du support Office.

×