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

Traduzione articoli Traduzione articoli
Identificativo articolo: 970507 - Visualizza i prodotti a cui si riferisce l?articolo.
Microsoft distribuisce le correzioni di Microsoft SQL Server 2008 come un unico file scaricabile. Poiché le correzioni sono cumulative, ogni nuova versione contiene tutti gli aggiornamenti rapidi e tutte le correzioni protezione rilasciate con SQL Server 2008 precedente versione di correggere.
Espandi tutto | Chiudi tutto

In questa pagina

Sintomi

Si consideri lo scenario seguente:
  • È necessario Microsoft SQL Server 2008 in un computer multiprocessore.
  • È possibile un'istruzione INSERT SELECT su una tabella contenente una chiave primaria.

    Nota Nell'istruzione INSERT SELECT , la tabella che riceve i dati è la stessa tabella i dati di output. Ad esempio:
    INSERT T1 ? SELECT T1
  • Si fa riferimento l'istruzione INSERT SELECT altre tabelle. Questi riferimenti includono una tabella temporanea.

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

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

Se si esamina il piano di esecuzione, è possibile trovare l'operatore di JOIN e l'operatore Eager Spool eseguiti 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 SELECT UPDATE o l'istruzione DELETE SELECT .

Cause

Questo problema si verifica causa di un bug nello spooler per l'operatore Eager Spool in cui lo spool genera più righe rispetto al previsto. Questo comportamento causa un problema di chiave duplicato.

Risoluzione

Informazioni sull'aggiornamento cumulativo

La correzione di questo problema è stata rilasciata prima in un aggiornamento cumulativo 3 per SQL Server 2008 Service Pack 1. Per ulteriori informazioni su questo pacchetto di aggiornamento cumulativo, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
971491Pacchetto di aggiornamento cumulativo 3 per SQL Server 2008 Service Pack 1
Nota Poiché le generazioni sono cumulative, ogni nuova versione di correzione contiene tutti gli aggiornamenti rapidi e tutte le correzioni protezione rilasciate con SQL Server 2008 precedente versione di correggere. Microsoft consiglia di considerare applicare la correzione rapida per la versione più recente che contiene questo aggiornamento rapido (hotfix). Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
970365Versioni di SQL Server 2008 rilasciate dopo il rilascio di SQL Server 2008 Service Pack 1
Microsoft SQL Server 2008 per service pack specifici di SQL Server vengono creati gli aggiornamenti rapidi. È 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 SQL Server.

Informazioni sull'hotfix

È ora disponibile un hotfix supportato. Tuttavia è destinato esclusivamente alla risoluzione del problema descritto in questo articolo. Applicarlo solo a sistemi che si verifica questo problema specifico. Questo aggiornamento rapido (hotfix) potrebbe essere eseguiti ulteriori test. Se non si è notevolmente interessati da questo problema, si consiglia pertanto di attendere il rilascio del prossimo service pack di SQL Server 2008 che contiene questo aggiornamento rapido (hotfix).

Per risolvere immediatamente questo problema, contattare il servizio di supporto clienti di Microsoft per ottenere l'hotfix. Per un elenco completo di numeri di telefono del supporto tecnico clienti Microsoft e per informazioni sui costi dell'assistenza, visitare il seguente sito Web Microsoft:
http://support.microsoft.com/contactus/?ws=support
Nota in casi particolari, le spese normalmente addebitate per le chiamate al Servizio Supporto Tecnico Clienti Microsoft potrebbero essere annullate qualora un addetto del Supporto Tecnico Microsoft dovesse determinare che uno specifico aggiornamento risolverà il problema. I normali costi del Servizio Supporto Tecnico Clienti verranno applicati per eventuali ulteriori domande e problemi che non dovessero rientrare nello specifico aggiornamento in questione.

Prerequisiti

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

Informazioni sul riavvio

Non è necessario riavviare il computer dopo avere applicato questo aggiornamento rapido (hotfix).

Informazioni del Registro di sistema

Non è necessario modificare il Registro di sistema.

Informazioni sul file di hotfix

Questo aggiornamento rapido (hotfix) contiene solo i file necessari per correggere i problemi elencati nel presente articolo. Questo aggiornamento rapido (hotfix) non siano tutti i file necessari per aggiornare completamente un prodotto all'ultima build.

La versione di lingua inglese di questo aggiornamento rapido (hotfix) presenta gli attributi di file (o attributi successivi) elencati nella tabella riportata di seguito. Le date e le ore per questi file sono indicati in UTC (Coordinated Universal Time). Quando si visualizzano le informazioni sul file, viene convertito in ora locale. Per calcolare la differenza tra ora UTC e l'ora locale, utilizzare la scheda fuso orario dello Data e ora nel Pannello di controllo.
Per tutte le versioni di motore di database di SQL Server 2008 su-86 x
Riduci questa tabellaEspandi questa tabella
Nome del fileVersione del fileDimensione del fileDataOraPiattaforma
Sqlaccess.dll2007.100.2712.0405,35213-Mag-200917: 53x 86
Keyfile.dll2007.100.2712.013,65613-Mag-200915: 37x 86
Sqlservr.exe2007.100.2712.042,729,32013-Mag-200917: 56x 86
Per tutte le versioni di SQL Server 2008 Analysis Services su-86 x
Riduci questa tabellaEspandi questa tabella
Nome del fileVersione del fileDimensione del fileDataOraPiattaforma
Msmdlocal.dll10.0.2712.023,461,72013-Mag-200916: 08x 86
Msmdsrv.exe10.0.2712.021,955,41613-Mag-200916: 09x 86
Keyfile.dll2007.100.2712.013,65613-Mag-200915: 37x 86
Msmdpump.dll10.0.2712.06,180,69613-Mag-200916: 08x 86
Msmdspdm.dll10.0.2712.0178,00813-Mag-200916: 08x 86
Msmgdsrv.dll10.0.2712.08,558,93613-Mag-200916: 09x 86
Msolap100.dll10.0.2712.06,532,95213-Mag-200916: 09x 86
Per tutte le versioni di motore di database di SQL Server 2008 su-64 x
Riduci questa tabellaEspandi questa tabella
Nome del fileVersione del fileDimensione del fileDataOraPiattaforma
Sqlaccess.dll2007.100.2712.0412,00814-Mag-200901: 15x 86
Keyfile.dll2007.100.2712.014,18413-Mag-200923: 55x 64
Sqlservr.exe2007.100.2712.057,873,25614-Mag-200901: 17x 64
Per tutte le versioni di SQL Server 2008 Analysis Services-su 64 x
Riduci questa tabellaEspandi questa tabella
Nome del fileVersione del fileDimensione del fileDataOraPiattaforma
Msmdlocal.dll10.0.2712.023,461,72013-Mag-200916: 08x 86
Msmdlocal.dll10.0.2712.044,436,82414-Mag-200900: 10x 64
Msmdsrv.exe10.0.2712.043,713,36814-Mag-200900: 10x 64
Keyfile.dll2007.100.2712.014,18413-Mag-200923: 55x 64
Msmdpump.dll10.0.2712.07,430,48814-Mag-200900: 10x 64
Msmdspdm.dll10.0.2712.0178,02414-Mag-200900: 10x 86
Msmgdsrv.dll10.0.2712.08,558,93613-Mag-200916: 09x 86
Msmgdsrv.dll10.0.2712.012,332,37614-Mag-200900: 11x 64
Msolap100.dll10.0.2712.06,532,95213-Mag-200916: 09x 86
Msolap100.dll10.0.2712.08,153,94414-Mag-200900: 11x 64
Per tutte le versioni basate su Itanium del motore di database di SQL Server 2008
Riduci questa tabellaEspandi questa tabella
Nome del fileVersione del fileDimensione del fileDataOraPiattaforma
Sqlaccess.dll2007.100.2712.0398,69613-Mag-200917/01:x 86
Keyfile.dll2007.100.2712.019,30413-Mag-200915: 26IA-64
Sqlservr.exe2007.100.2712.0111,042,40813-Mag-200917: 08IA-64
Per tutte le versioni basate su Itanium di SQL Server 2008 Analysis Services
Riduci questa tabellaEspandi questa tabella
Nome del fileVersione del fileDimensione del fileDataOraPiattaforma
Msmdlocal.dll10.0.2712.023,461,72013-Mag-200916: 08x 86
Msmdlocal.dll10.0.2712.057,508,18413-Mag-200915: 44IA-64
Msmdsrv.exe10.0.2712.058,860,88813-Mag-200915: 46IA-64
Keyfile.dll2007.100.2712.019,30413-Mag-200915: 26IA-64
Msmdpump.dll10.0.2712.08,943,44813-Mag-200915: 45IA-64
Msmdspdm.dll10.0.2712.0178,00813-Mag-200915: 45x 86
Msmgdsrv.dll10.0.2712.015,485,80013-Mag-200915: 47IA-64
Msmgdsrv.dll10.0.2712.08,558,93613-Mag-200916: 09x 86
Msolap100.dll10.0.2712.010,065,24013-Mag-200915: 47IA-64
Msolap100.dll10.0.2712.06,532,95213-Mag-200916: 09x 86

Workaround

Per risolvere questo problema, impostare la query MAXDOP o l'opzione di MAXDOP su 1 , l'istruzione o a livello di server.

Nota Il livello di server MAXDOP opzione influenza le prestazioni di tutte le query eseguite sul server.

Status

Microsoft ha confermato che questo problema riguarda i prodotti sono elencati nella sezione "Si applica a".

Riferimenti

Per ulteriori informazioni sul modello di manutenzione incrementale per SQL Server, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
935897Un modello di manutenzione incrementale è disponibile dal team di SQL Server per fornire aggiornamenti rapidi per i problemi segnalati


Per ulteriori informazioni sullo schema di denominazione degli aggiornamenti di SQL Server, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
822499Nuovo schema di denominazione per i pacchetti di aggiornamento software di Microsoft SQL Server


Per ulteriori informazioni sulla terminologia di aggiornamento software, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
824684Descrizione della terminologia standard utilizzata per descrivere gli aggiornamenti software Microsoft

Proprietà

Identificativo articolo: 970507 - Ultima modifica: venerdì 24 luglio 2009 - Revisione: 2.0
Le informazioni in questo articolo si applicano a:
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Workgroup
Chiavi: 
kbmt kbsurveynew kbfix kbqfe kbexpertiseadvanced kbhotfixserver KB970507 KbMtit
Traduzione automatica articoli
Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 970507
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com