CORREÇÃO: erro "um valor especificado violou as restrições de integridade para uma coluna ou tabela" se a publicação de mesclagem contém vários artigos e restrições no SQL Server Compact 3.5

Template: Generic Hotfix

BUG #: 149290 (Content Maintenance)VSTS Bug #: 767547

Sintomas

Considere o seguinte cenário:

  • Você instala o Microsoft SQL Server Compact 3.5 em um computador.

  • Você pode criar uma assinatura no SQL Server Compact 3.5.

  • Baixar várias linhas de uma publicação de mesclagem para um banco de dados enquanto o publisher sincroniza com o assinante. As linhas contêm vários artigos e restrições.

Nesse cenário, uma mensagem de erro semelhante à seguinte é registrada no log de erros do SQL Server:

Erro de System.Data.SqlServerCe.SqlCeExceptionNative = 0, HRESULT =-2147217873, mensagem de erro: um valor especificado violou as restrições de integridade para uma coluna ou tabela.

Observação Esse problema ocorre no sistema operacional de 32 bits e o sistema operacional de 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.


Causa

Esse problema ocorre porque uma identificação do exchange inválido é usada. Quando muitas linhas para download estiverem em um estado pendente, SQL Compact Client Agent chama um método de repetição que usa uma identificação inválida do exchange. Portanto, o problema mencionado na seção "Sintomas" ocorre.

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.

Resolução

O hotfix resolve esse problema está incluído no pacote de atualizações cumulativas 5 para SQL Server Compact 3.5 Service Pack 2 (SP2). Para obter mais informações sobre como obter o pacote de atualizações cumulativas 5 para SQL Server Compact 3.5 SP2, clique no número abaixo para ler o artigo na Base de Conhecimento da Microsoft:

2553608 5 de atualização cumulativa para SQL Server Compact 3.5 Service Pack 2

Author: jannaw
Writer: v-yipli
Tech Reviewer: panarasi;rtandon;ambrishm;babuk;atisagar;jannaw
Editor: v-lynan

Precisa de mais ajuda?

Expanda suas habilidades
Explore o treinamento
Obtenha novos recursos primeiro
Ingressar no Microsoft Insider

Estas informações foram úteis?

Obrigado por seus comentários!

Agradecemos pelos seus comentários! Parece que pode ser útil conectar você a um de nossos agentes de suporte do Office.

×