MSSQL_ENG002601MSSQL_ENG002601

In questo argomento si applica a: SìSQL ServernonDatabase SQL di AzurenonAzure SQL Data Warehouse non Parallel Data WarehouseTHIS TOPIC APPLIES TO: yesSQL ServernoAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Dettagli messaggioMessage Details

Nome prodottoProduct Name SQL ServerSQL Server
ID eventoEvent ID 26012601
Origine eventoEvent Source MSSQLSERVERMSSQLSERVER
ComponenteComponent Motore di database di SQL ServerSQL Server Database Engine
Nome simbolicoSymbolic Name N/DN/A
Testo del messaggioMessage Text Non è possibile inserire la riga di chiave duplicata nell'oggetto '%.ls!' con indice univoco '%.*ls'.Cannot insert duplicate key row in object '%.ls' with unique index '%.*ls'.

SpiegazioneExplanation

Questo errore generale può essere generato indipendentemente dal fatto che un database venga o meno replicato.This is a general error that can be raised regardless of whether a database is replicated. Nei database replicati l'errore viene di solito generato in quanto le chiavi primarie non sono state gestite correttamente nella topologia.In replicated databases, the error is typically raised because primary keys have not been managed appropriately across the topology. 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.In a distributed environment it is essential to ensure that the same value is not inserted into a primary key column or any other unique column at more than one node. Le cause possibile includono:Possible causes include the following:

  • Le operazioni di inserimento e aggiornamento su una riga vengono eseguite in più di un nodo.Inserts and updates to a row are occurring at more than one node. 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.Merge replication and updatable subscriptions for transactional replication both provide conflict detection and resolution, but it is still preferable to insert or update a given row at only one node. 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.Peer-to-peer transactional does not provide conflict detection and resolution; it requires that inserts and updates be partitioned.

  • È stata inserita una riga in un Sottoscrittore che dovrebbe essere di sola lettura.A row was inserted at a Subscriber that should be read-only. 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.Subscribers to snapshot publications should be treated as read-only, as should Subscribers to transactional publications unless updatable subscriptions or peer-to-peer transactional replication is used.

  • Viene utilizzata una tabella con una colonna Identity, ma la colonna non è gestita in modo appropriato.A table with an identity column is being used, but the column is not managed appropriately.

  • 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'".In merge replication, this error can also occur during an insert into the system table MSmerge_contents; the error raised is similar to: Cannot insert duplicate key row in object 'MSmerge_contents' with unique index 'ucl1SycContents.'

Azione dell'utenteUser Action

L'azione richiesta dipende dal motivo per il quale è stato generato l'errore:The action required depends on the reason the error was raised:

  • Le operazioni di inserimento e aggiornamento su una riga vengono eseguite in più di un nodo.Inserts and updates to a row are occurring at more than one node.

    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.Regardless of the type of replication used, we recommend that you partition inserts and updates whenever possible, because this reduces the processing required for conflict detection and resolution. Per la replica transazionale peer-to-peer, è richiesto il partizionamento di inserimenti e aggiornamenti.For peer-to-peer transactional replication, partitioning inserts and updates is required. Per altre informazioni, vedere Peer-to-Peer Transactional Replication.For more information, see Peer-to-Peer Transactional Replication.

  • È stata inserita una riga in un Sottoscrittore che dovrebbe essere di sola lettura.A row was inserted at a Subscriber that should be read-only.

    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.Do not insert or update rows at the Subscriber unless you are using merge replication, transactional replication with updatable subscriptions, or peer-to-peer transactional replication.

  • Viene utilizzata una tabella con una colonna Identity, ma la colonna non è gestita in modo appropriato.A table with an identity column is being used, but the column is not managed appropriately.

    Per la replica di tipo merge e la replica transazionale con sottoscrizioni aggiornabili, le colonne Identity devono essere gestite automaticamente dalla replica.For merge replication and transactional replication with updatable subscriptions, identity columns should be managed automatically by replication. Per la replica transazionale peer-to-peer, devono invece essere gestite manualmente.For peer-to-peer transactional replication, they must be managed manually. Per altre informazioni, vedere Replicare colonne Identity.For more information, see Replicate Identity Columns.

  • L'errore si verifica durante un inserimento nella tabella di sistema MSmerge_contents.The error occurs during an insert into the system table MSmerge_contents.

    Tale errore può verificarsi a causa di un valore non corretto per la proprietà del filtro join join_unique_key.This error can occur because of an incorrect value for the join filter property join_unique_key. Tale proprietà deve essere impostata su TRUE solo se la colonna unita in join nella tabella padre è univoca.This property should be set to TRUE only if the joined column in the parent table is unique. Se la proprietà è impostata su TRUE ma la colonna non è univoca, viene generato l'errore.If the property is set to TRUE, but the column is not unique, this error is raised. Per ulteriori informazioni sull'impostazione di questa proprietà, vedere Define and Modify a Join Filter Between Merge Articles.For more information on setting this property, see Define and Modify a Join Filter Between Merge Articles.

Vedere ancheSee Also

Guida di riferimento a errori ed eventi (replica)Errors and Events Reference (Replication)