MSSQL_ENG002601
Dettagli messaggio
Nome prodotto |
SQL Server |
Versione prodotto |
9.0 |
Numero di build del prodotto |
9.00.1399.60 |
ID evento |
2601 |
Origine evento |
MSSQLSERVER |
Componente |
Motore di database di SQL Server |
Nome simbolico |
N/A |
Testo del messaggio |
Impossibile inserire la riga di chiave duplicata nell'oggetto '%.*ls' con indice univoco '%.*ls'. |
Spiegazione
Questo errore generale può essere generato indipendentemente dal fatto che un database venga o meno replicato. Nei database replicati l'errore viene di solito generato in quanto le chiavi primarie non sono state gestite correttamente nella topologia. In un ambiente distribuito è fondamentale garantire che lo stesso valore non venga inserito in una colonna chiave primaria o in qualsiasi altra colonna univoca in più di un nodo. Le cause possibile includono:
- Le operazioni di inserimento e aggiornamento su una riga vengono eseguite in più di un nodo. Sebbene la replica di tipo merge e le sottoscrizioni aggiornabili per la replica transazionale consentano il rilevamento e la risoluzione dei conflitti, è preferibile inserire o aggiornare una determinata riga in un unico nodo. La replica transazionale di tipo peer-to-peer non fornisce funzioni di rilevamento e risoluzione dei conflitti e richiede il partizionamento degli inserimenti e degli aggiornamenti.
- È stata inserita una riga in un Sottoscrittore che dovrebbe essere di sola lettura. I Sottoscrittori delle pubblicazioni snapshot devono essere considerati come di sola lettura, analogamente ai Sottoscrittori delle pubblicazioni transazionali a meno che non vengano utilizzate sottoscrizioni aggiornabili o una replica transazione peer-to-peer.
- Viene utilizzata una tabella con una colonna Identity, ma la colonna non è gestita in modo appropriato.
- Nella replica di tipo merge questo errore può verificarsi anche durante un inserimento nella tabella di sistema MSmerge_contents. L'errore generato è simile all'errore "Impossibile inserire la riga di chiave duplicata nell'oggetto 'MSmerge_contents' con indice univoco 'ucl1SycContents'".
Azione utente
L'azione richiesta dipende dal motivo per il quale è stato generato l'errore:
- Le operazioni di inserimento e aggiornamento su una riga vengono eseguite in più di un nodo.
Indipendentemente dal tipo di replica utilizzato, è consigliabile partizionare inserimenti e aggiornamenti quando possibile, in modo da ridurre l'elaborazione richiesta per il rilevamento e la risoluzione dei conflitti. Per la replica transazionale peer-to-peer, è richiesto il partizionamento di inserimenti e aggiornamenti. Per ulteriori informazioni, vedere Replica transazionale peer-to-peer. - È stata inserita una riga in un Sottoscrittore che dovrebbe essere di sola lettura.
Non inserire o aggiornare righe nel Sottoscrittore a meno che non si stia utilizzando la replica di tipo merge, la replica transazionale con sottoscrizioni aggiornabili o la replica transazionale peer-to-peer. - Viene utilizzata una tabella con una colonna Identity, ma la colonna non è gestita in modo appropriato.
Per la replica di tipo merge e la replica transazionale con sottoscrizioni aggiornabili, le colonne Identity devono essere gestite automaticamente dalla replica. Per la replica transazionale peer-to-peer, devono invece essere gestite manualmente. Per ulteriori informazioni, vedere Replica di colonne Identity. - L'errore si verifica durante un inserimento nella tabella di sistema MSmerge_contents.
Tale errore può verificarsi a causa di un valore non corretto per la proprietà del filtro join join_unique_key. Tale proprietà deve essere impostata su TRUE solo se la colonna unita in join nella tabella padre è univoca. Se la proprietà è impostata su TRUE ma la colonna non è univoca, viene generato l'errore. Per ulteriori informazioni sull'impostazione di questa proprietà, vedere Procedura: Definizione e modifica di un filtro join tra articoli di merge (SQL Server Management Studio) e How to: Define and Modify a Join Filter Between Merge Articles (Replication Transact-SQL Programming).
Vedere anche
Concetti
Causa e risoluzione degli errori di replica