Al momento sei offline in attesa che la connessione Internet venga ristabilita

FIX: Messaggio di errore in SQL Server 2008 quando si esegue un'istruzione INSERT SELECT su una tabella: "violazione di vincolo PRIMARY KEY '<PrimaryKey>'. Impossibile inserire la chiave duplicata nell'oggetto '<TableName>' "</...

IMPORTANTE: il presente articolo è stato tradotto tramite un software di traduzione automatica di Microsoft ed eventualmente revisionato dalla community Microsoft tramite la tecnologia CTF (Community Translation Framework) o da un traduttore professionista. Microsoft offre articoli tradotti manualmente e altri tradotti automaticamente e rivisti dalla community con l’obiettivo di consentire all'utente di accedere a tutti gli articoli della Knowledge Base nella propria lingua. Tuttavia, un articolo tradotto automaticamente, anche se rivisto dalla community, non sempre è perfetto. Potrebbe contenere errori di vocabolario, di sintassi o di grammatica. Microsoft declina ogni responsabilità per imprecisioni, errori o danni causati da una traduzione sbagliata o dal relativo utilizzo da parte dei clienti. Microsoft aggiorna frequentemente il software e gli strumenti di traduzione automatica per continuare a migliorare la qualità della traduzione.

Clicca qui per visualizzare la versione originale in inglese dell’articolo: 970507
Microsoft distribuisce le correzioni Microsoft SQL Server 2008 come un unico file scaricabile. Poiché le correzioni sono cumulative, ogni nuova versione contiene tutte le correzioni rapide e rilascio delle correzioni per tutte le correzioni fornite con il precedente 2008 di SQL Server.
Sintomi
Si consideri lo scenario seguente:
  • Si dispone di Microsoft SQL Server 2008 installato in un computer multiprocessore.
  • È presente un'istruzione INSERT SELECT su una tabella contenente una chiave primaria.

    Nota Nell'istruzione INSERT SELECT nella tabella che riceve i dati è la stessa tabella che invia i dati. Ad esempio:
    INSERT T1 … SELECT T1
  • Si fa riferimento a altre tabelle nell'istruzione INSERT SELECT . Questi riferimenti includono una tabella temporanea.

    Nota Le tabelle a cui fa riferimento nella clausola FROM o le tabelle a cui fa riferimento in una condizione di join o subquery.
Quando si esegue l'istruzione, viene visualizzato il seguente messaggio di errore:

Msg 2627, livello 14, stato 1
Violazione del vincolo PRIMARY KEY 'PrimaryKey'. Impossibile inserire la chiave duplicata nell'oggetto 'TableName'.

Se si esamina il piano di esecuzione, è possibile trovare che l'operatore JOIN e l'operatore Eager Spool in esecuzione in parallelo. Questo operatore Eager Spool si trova sotto l'operatore JOIN . Inoltre, la tabella che riceve i dati nell'istruzione è la tabella interna del join.

Nota Questo problema si verifica anche quando si esegue l'istruzione UPDATE selezionare o Eliminare selezionare .
Cause
Questo problema si verifica a causa di un bug nello spooler per l'operatore Eager Spool dove la bobina genera più righe del previsto. Questo comportamento causa un problema di chiave duplicato.
Risoluzione

Informazioni sull'aggiornamento cumulativo

La correzione di questo problema è stata rilasciata prima nell'aggiornamento cumulativo 3 per SQL Server 2008 Service Pack 1. Per ulteriori informazioni su questo pacchetto di aggiornamento cumulativo, fare clic sul seguente numero di articolo per visualizzare l'articolo della Microsoft Knowledge Base:
971491 Pacchetto di aggiornamento cumulativo 3 per SQL Server 2008 Service Pack 1
Nota Poiché le versioni sono cumulative, ogni nuova versione di correzione contiene tutti gli hotfix e rilascio delle correzioni per tutte le correzioni fornite con il precedente 2008 di SQL Server. Microsoft consiglia di considerare l'applicazione alla versione più recente di correzione contenente tale hotfix. Per ulteriori informazioni, fare clic sul seguente numero di articolo per visualizzare l'articolo della Microsoft Knowledge Base:
970365 Il 2008 di SQL Server versioni rilasciate dopo il rilascio di SQL Server 2008 Service Pack 1
Aggiornamenti rapidi di Microsoft SQL Server 2008 vengono creati per service pack specifici di SQL Server. È necessario applicare un hotfix di SQL Server 2008 Service Pack 1 a un'installazione di SQL Server 2008 Service Pack 1. Per impostazione predefinita, qualsiasi hotfix fornito in un service pack di SQL Server è incluso nel successivo service pack di SQL Server.

Informazioni sull'hotfix

Un hotfix supportato è disponibile da Microsoft. Tuttavia è destinato esclusivamente alla risoluzione il problema descritto in questo articolo. Applicarlo solo ai sistemi in cui si verificano questo problema specifico. Questo hotfix potrebbe ricevere ulteriori verifiche. Se il problema non causa gravi difficoltà, si consiglia di attendere la versione successiva del service pack di SQL Server 2008 contenente tale hotfix.

Per risolvere immediatamente questo problema, contattare il supporto tecnico clienti Microsoft per ottenere l'hotfix. Per un elenco completo di numeri di telefono del supporto tecnico clienti Microsoft e informazioni sui costi dell'assistenza, visitare il seguente sito Web Microsoft:Nota In casi particolari, le spese normalmente addebitate per le chiamate al supporto tecnico potrebbero essere annullate se un professionista del supporto Microsoft determina che uno specifico aggiornamento risolverà il problema. I costi di supporto usuali verranno applicati per eventuali ulteriori domande e problemi che non dovessero rientrare nello specifico aggiornamento in questione.

Prerequisiti

Per applicare questo hotfix, è necessario disporre di un computer che esegue SQL Server 2008 Service Pack 1 (SP1).

Informazioni sul riavvio

Non è necessario riavviare il computer dopo avere applicato questo hotfix.

Informazioni del Registro di sistema

Non è necessario modificare il Registro di sistema.

Informazioni sui file

Questo hotfix contiene solo i file necessari per correggere i problemi elencati in questo articolo. Questo hotfix potrebbe non contenere tutti i file necessari per aggiornare completamente un prodotto all'ultima build.

La versione inglese di questo hotfix presenta gli attributi di file (o attributi successivi) elencati nella tabella riportata di seguito. Le date e ore dei file sono elencate nel tempo universale coordinato (UTC). Quando si visualizzano le informazioni sul file, viene convertito in ora locale. Per calcolare la differenza tra ora UTC e ora locale, utilizzare la scheda fuso orario nell'elemento di Data e ora nel Pannello di controllo.
Per tutte le versioni basate su x86 di gestione di Database di SQL Server 2008
Nome del fileVersione del fileDimensione del fileDataOraPiattaforma
SQLAccess2007.100.2712.0405,35213-maggio-200917:53x86
Keyfile.dll2007.100.2712.013,65613-maggio-200915:37x86
Sqlservr.exe2007.100.2712.042,729,32013-maggio-200917:56x86
Per tutte le versioni basate su x86 di SQL Server 2008 Analysis Services
Nome del fileVersione del fileDimensione del fileDataOraPiattaforma
Msmdlocal.dll10.0.2712.023,461,72013-maggio-200916:08x86
Msmdsrv.exe10.0.2712.021,955,41613-maggio-200916:09x86
Keyfile.dll2007.100.2712.013,65613-maggio-200915:37x86
Msmdpump10.0.2712.06,180,69613-maggio-200916:08x86
Msmdspdm.dll10.0.2712.0178,00813-maggio-200916:08x86
Msmgdsrv10.0.2712.08,558,93613-maggio-200916:09x86
Msolap100.dll10.0.2712.06,532,95213-maggio-200916:09x86
Per tutte le versioni basate su x64 di motore di Database di SQL Server 2008
Nome del fileVersione del fileDimensione del fileDataOraPiattaforma
SQLAccess2007.100.2712.0412,00814-maggio-200901:15x86
Keyfile.dll2007.100.2712.014,18413-maggio-200923:55x64
Sqlservr.exe2007.100.2712.057,873,25614-maggio-200901:17x64
Per tutte le versioni basate su x64 di SQL Server 2008 Analysis Services
Nome del fileVersione del fileDimensione del fileDataOraPiattaforma
Msmdlocal.dll10.0.2712.023,461,72013-maggio-200916:08x86
Msmdlocal.dll10.0.2712.044,436,82414-maggio-200900:10x64
Msmdsrv.exe10.0.2712.043,713,36814-maggio-200900:10x64
Keyfile.dll2007.100.2712.014,18413-maggio-200923:55x64
Msmdpump10.0.2712.07,430,48814-maggio-200900:10x64
Msmdspdm.dll10.0.2712.0178,02414-maggio-200900:10x86
Msmgdsrv10.0.2712.08,558,93613-maggio-200916:09x86
Msmgdsrv10.0.2712.012,332,37614-maggio-200900:11x64
Msolap100.dll10.0.2712.06,532,95213-maggio-200916:09x86
Msolap100.dll10.0.2712.08,153,94414-maggio-200900:11x64
Per tutte le versioni basate su Itanium supportate di SQL Server 2008 Database Engine
Nome del fileVersione del fileDimensione del fileDataOraPiattaforma
SQLAccess2007.100.2712.0398,69613-maggio-200917:01x86
Keyfile.dll2007.100.2712.019,30413-maggio-200915:26IA-64
Sqlservr.exe2007.100.2712.0111,042,40813-maggio-200917:08IA-64
Per tutte le versioni basate su Itanium supportate di SQL Server 2008 Analysis Services
Nome del fileVersione del fileDimensione del fileDataOraPiattaforma
Msmdlocal.dll10.0.2712.023,461,72013-maggio-200916:08x86
Msmdlocal.dll10.0.2712.057,508,18413-maggio-200915:44IA-64
Msmdsrv.exe10.0.2712.058,860,88813-maggio-200915:46IA-64
Keyfile.dll2007.100.2712.019,30413-maggio-200915:26IA-64
Msmdpump10.0.2712.08,943,44813-maggio-200915:45IA-64
Msmdspdm.dll10.0.2712.0178,00813-maggio-200915:45x86
Msmgdsrv10.0.2712.015,485,80013-maggio-200915:47IA-64
Msmgdsrv10.0.2712.08,558,93613-maggio-200916:09x86
Msolap100.dll10.0.2712.010,065,24013-maggio-200915:47IA-64
Msolap100.dll10.0.2712.06,532,95213-maggio-200916:09x86
Workaround
Per ovviare a questo problema, impostare l'hint di query MAXDOP o l'opzione MAXDOP su 1 a livello server o istruzione.

Nota Il livello di server opzione MAXDOP influenza le prestazioni di tutte le query eseguite sul server.
Status
Microsoft ha confermato che questo è un problema nei prodotti Microsoft elencati nella sezione "Si applica a".
Riferimenti
Per ulteriori informazioni sul modello di manutenzione incrementale per SQL Server, fare clic sul seguente numero di articolo per visualizzare l'articolo della Microsoft Knowledge Base:
935897 Un modello di manutenzione incrementale è disponibile dal team di SQL Server per offrire gli hotfix per i problemi segnalati


Per ulteriori informazioni sullo schema di denominazione per gli aggiornamenti di SQL Server, fare clic sul seguente numero di articolo per visualizzare l'articolo della Microsoft Knowledge Base:
822499Nuovo schema di denominazione per i pacchetti di aggiornamento software di Microsoft SQL Server


Per ulteriori informazioni sulla terminologia degli aggiornamenti software, fare clic sul seguente numero di articolo per visualizzare l'articolo della Microsoft Knowledge Base:
824684 Descrizione della terminologia standard utilizzata per descrivere gli aggiornamenti software Microsoft

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 970507 - Ultima revisione: 01/18/2015 23:23:00 - Revisione: 3.0

Microsoft SQL Server 2008 Standard, Microsoft SQL Server 2008 Developer, Microsoft SQL Server 2008 Enterprise, Microsoft SQL Server 2008 Workgroup

  • kbsurveynew kbfix kbqfe kbexpertiseadvanced kbhotfixserver kbmt KB970507 KbMtit
Feedback
/html>=">