Update: Fehlermeldung in SQL Server 2008, wenn Sie eine INSERT SELECT-Anweisung auf eine Tabelle ausführen: "Verletzung der PRIMARY KEY-Einschränkung '<primarykey>'. Doppelten Schlüssel kann nicht in '<tablename>'-Objekt eingefügt werden"

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 970507 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Microsoft stellt Updates für Microsoft SQL Server 2008 als downloadbare Datei. Da die Updates kumulativ sind, enthält jede neue Version alle Hotfixes und alle Sicherheitsupdates, die mit früheren SQL Server 2008 enthalten waren.
Alles erweitern | Alles schließen

Auf dieser Seite

Problembeschreibung

Stellen Sie sich das folgende Szenario vor:
  • Sie haben Microsoft SQL Server 2008 auf einem Multiprozessor-Computer installiert.
  • Sie haben eine INSERT SELECT -Anweisung auf eine Tabelle einen Primärschlüssel enthält.

    Hinweis: In der INSERT SELECT -Anweisung ist die Tabelle, die die Daten empfängt die gleiche Tabelle, die die Daten ausgegeben. Z. B.:
    INSERT T1 … SELECT T1
  • Sie verweisen anderen Tabellen in diese INSERT SELECT -Anweisung. Diese Verweise enthalten eine temporäre Tabelle.

    Hinweis: Die Tabellen in einer Unterabfrage oder Join-Bedingung verwiesen wird, oder die Tabellen werden in der FROM -Klausel verwiesen.
Wenn Sie die Anweisung ausführen, erhalten Sie folgende Fehlermeldung:

Msg 2627, Ebene 14, Status 1
Verletzung der PRIMARY KEY-Einschränkung ' PrimaryKey '. Doppelten Schlüssel kann nicht in Objekt ' TableName ' eingefügt werden.

Wenn Sie den Ausführungsplan betrachten, finden Sie, dass der JOIN -Operator und der Eager Spool -Operator parallel ausgeführt. Dieser Operator Eager Spool ist unter der JOIN -Operator. Darüber hinaus ist die Tabelle, die die Daten in der Anweisung empfängt der inneren Tabelle der Verknüpfung.

Hinweis: Dieses Problem tritt auch beim Ausführen der UPDATE-SELECT -Anweisung oder die DELETE-SELECT -Anweisung.

Ursache

Dieses Problem tritt aufgrund eines Fehlers in der Spool für den Operator Eager Spool , generiert der Spooler mehr Zeilen als erwartet. Dieses Verhalten führt ein Problem mit doppelten Schlüssel.

Lösung

Kumulatives Update-Informationen

Die Fehlerbehebung für dieses Problem wurde zuerst im kumulative Update 3 für SQL Server 2008 Service Pack 1 veröffentlicht. Weitere Informationen zu diesem kumulativen Update-Paket finden Sie im folgenden Artikel der Microsoft Knowledge Base:
971491Kumulatives Updatepaket 3 für SQL Server 2008 Service Pack 1
Hinweis: Da die Builds kumulativ sind, enthält jede neue Update-Version alle Hotfixes und alle Sicherheitsupdates, die mit früheren SQL Server 2008 enthalten waren. Microsoft empfiehlt, dass Sie in Erwägung ziehen Anwenden der neuesten Update-Version, die diesen Hotfix enthält. Weitere Informationen finden Sie im folgenden Artikel der Microsoft Knowledge Base:
970365SQL Server 2008 erstellt, die nach Freigabe von SQL Server 2008 Service Pack 1 veröffentlicht wurden
Microsoft SQL Server 2008 Hotfixes sind für bestimmte SQL Server Servicepacks erstellt. Sie müssen einen SQL Server 2008 Service Pack 1 Hotfix auf eine Installation von SQL Server 2008 Service Pack 1 anwenden. Standardmäßig ist jeder Hotfix, der in einer SQL Server Service Pack bereitgestellt wird in das nächste SQL Server Service Pack enthalten.

Hotfix-Informationen

Ein unterstützter Hotfix ist inzwischen von Microsoft. Es ist jedoch nur die Behebung des Problems die in diesem Artikel beschriebene vorgesehen. Wenden Sie es nur auf Systemen, bei die dieses spezielle Problem auftritt. Dieser Hotfix wird unter Umständen zu einem späteren Zeitpunkt weiteren Tests unterzogen. Wenn Sie durch dieses Problem nicht schwerwiegend betroffen sind, empfiehlt Microsoft daher, auf das nächste SQL Server 2008 Servicepack warten, das diesen Hotfix enthält wird.

Dieses Problem sofort beheben möchten, wenden Sie sich an Microsoft Support Services, um den Hotfix zu erhalten. Eine vollständige Liste mit Telefonnummern der Microsoft Product Support Services und Informationen über Supportkosten der folgenden Microsoft-Website:
http://support.microsoft.com/contactus/?ws=support
Hinweis: PLEASE DO NOT TRANSLATE and DELETE THIS PASSAGE. IT DOES NOT APPLY TO GERMANY.

Voraussetzungen

Um diesen Hotfix installieren, müssen Sie einen Computer verfügen, auf dem SQL Server 2008 Service Pack 1 (SP1) ausgeführt wird.

Informationen zum Neustart

Sie müssen den Computer nach Installation dieses Hotfixes neu starten.

Informationen zur Registrierung

Sie müssen die Registrierung ändern.

Dateiinformationen

Dieser Hotfix enthält nur die Dateien, die um die Probleme zu beheben, die in diesem Artikel aufgelistet erforderlich sind. Dieser Hotfix enthält möglicherweise nicht alle Dateien, die Sie benötigen, um ein Produkt vollständig auf den neuesten Stand zu aktualisieren.

Die englische Version dieses Hotfixes weist die Dateiattribute (oder höher Dateiattribute), die in der folgenden Tabelle aufgelistet werden. Die Datums- und Uhrzeitangaben für diese Dateien sind in Coordinated Universal Time (UTC) angegeben. Wenn Sie sich die Dateiinformationen ansehen, werden diese Angaben in die lokale Zeit konvertiert. Verwenden Sie die Registerkarte Zeitzone im Element Datum und Uhrzeit in der Systemsteuerung, um die Differenz zwischen UTC und der Ortszeit zu ermitteln.
Für alle unterstützten x 86-basierten Versionen von SQL Server 2008-Datenbankmodul
Tabelle minimierenTabelle vergrößern
DateinameDateiversionDateigrößeDatumUhrzeitPlattform
Sqlaccess.dll2007.100.2712.0405,35213-Mai 200917: 53X 86
Keyfile.dll2007.100.2712.013,65613-Mai 200915: 37X 86
Sqlservr.exe2007.100.2712.042,729,32013-Mai 200917: 56X 86
Für alle unterstützten x 86-basierten Versionen von SQL Server 2008 Analysis Services
Tabelle minimierenTabelle vergrößern
DateinameDateiversionDateigrößeDatumUhrzeitPlattform
Msmdlocal.dll10.0.2712.023,461,72013-Mai 200916: 08X 86
Msmdsrv.exe10.0.2712.021,955,41613-Mai 200916: 09X 86
Keyfile.dll2007.100.2712.013,65613-Mai 200915: 37X 86
Msmdpump.dll10.0.2712.06,180,69613-Mai 200916: 08X 86
Msmdspdm.dll10.0.2712.0178,00813-Mai 200916: 08X 86
Msmgdsrv.dll10.0.2712.08,558,93613-Mai 200916: 09X 86
Msolap100.dll10.0.2712.06,532,95213-Mai 200916: 09X 86
Für alle unterstützten x 64-basierten Versionen von SQL Server 2008-Datenbankmodul
Tabelle minimierenTabelle vergrößern
DateinameDateiversionDateigrößeDatumUhrzeitPlattform
Sqlaccess.dll2007.100.2712.0412,00814-Mai 200901: 15X 86
Keyfile.dll2007.100.2712.014,18413-Mai 200923: 55X 64
Sqlservr.exe2007.100.2712.057,873,25614-Mai 200901: 17X 64
Für alle unterstützten x 64-basierten Versionen von SQL Server 2008 Analysis Services
Tabelle minimierenTabelle vergrößern
DateinameDateiversionDateigrößeDatumUhrzeitPlattform
Msmdlocal.dll10.0.2712.023,461,72013-Mai 200916: 08X 86
Msmdlocal.dll10.0.2712.044,436,82414-Mai 200900: 10X 64
Msmdsrv.exe10.0.2712.043,713,36814-Mai 200900: 10X 64
Keyfile.dll2007.100.2712.014,18413-Mai 200923: 55X 64
Msmdpump.dll10.0.2712.07,430,48814-Mai 200900: 10X 64
Msmdspdm.dll10.0.2712.0178,02414-Mai 200900: 10X 86
Msmgdsrv.dll10.0.2712.08,558,93613-Mai 200916: 09X 86
Msmgdsrv.dll10.0.2712.012,332,37614-Mai 200900: 11X 64
Msolap100.dll10.0.2712.06,532,95213-Mai 200916: 09X 86
Msolap100.dll10.0.2712.08,153,94414-Mai 200900: 11X 64
Für alle unterstützten Itanium-basierte Versionen von SQL Server 2008-Datenbankmodul
Tabelle minimierenTabelle vergrößern
DateinameDateiversionDateigrößeDatumUhrzeitPlattform
Sqlaccess.dll2007.100.2712.0398,69613-Mai 200917: 01X 86
Keyfile.dll2007.100.2712.019,30413-Mai 200915: 26IA-64
Sqlservr.exe2007.100.2712.0111,042,40813-Mai 200917: 08IA-64
Für alle unterstützten Itanium-basierte Versionen von SQL Server 2008 Analysis Services
Tabelle minimierenTabelle vergrößern
DateinameDateiversionDateigrößeDatumUhrzeitPlattform
Msmdlocal.dll10.0.2712.023,461,72013-Mai 200916: 08X 86
Msmdlocal.dll10.0.2712.057,508,18413-Mai 200915: 44IA-64
Msmdsrv.exe10.0.2712.058,860,88813-Mai 200915: 46IA-64
Keyfile.dll2007.100.2712.019,30413-Mai 200915: 26IA-64
Msmdpump.dll10.0.2712.08,943,44813-Mai 200915: 45IA-64
Msmdspdm.dll10.0.2712.0178,00813-Mai 200915: 45X 86
Msmgdsrv.dll10.0.2712.015,485,80013-Mai 200915: 47IA-64
Msmgdsrv.dll10.0.2712.08,558,93613-Mai 200916: 09X 86
Msolap100.dll10.0.2712.010,065,24013-Mai 200915: 47IA-64
Msolap100.dll10.0.2712.06,532,95213-Mai 200916: 09X 86

Abhilfe

Um dieses Problem zu umgehen, legen Sie des Abfragehinweises oder MAXDOP-Option auf 1 auf die Anweisung oder der Ebene des Servers.

Hinweis: Der Serverebene MAXDOP Option wirkt sich die Systemleistung alle Abfragen, die auf dem Server ausgeführt.

Status

Microsoft hat bestätigt, dass dies ein Problem in Microsoft-Produkten handelt, die im Abschnitt "Gilt für" aufgeführt sind.

Informationsquellen

Weitere Informationen zu inkrementellen Dienstmodell für SQL Server finden Sie im folgenden Artikel der Microsoft Knowledge Base:
935897Ein inkrementelles Dienstmodell steht SQL Server-Team zum Übermitteln von Hotfixes für gemeldete Probleme


Weitere Informationen zum Benennungsschema für SQL Server-Updates finden Sie im folgenden Artikel der Microsoft Knowledge Base:
822499Neues Namensschema für Microsoft SQL Server-Softwareupdate-Paketen


Weitere Informationen zur Terminologie für Softwareupdates finden Sie im folgenden Artikel der Microsoft Knowledge Base:
824684Erläuterung von Standardbegriffen bei Microsoft Softwareupdates

Eigenschaften

Artikel-ID: 970507 - Geändert am: Freitag, 24. Juli 2009 - Version: 2.0
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Workgroup
Keywords: 
kbmt kbsurveynew kbfix kbqfe kbexpertiseadvanced kbhotfixserver KB970507 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 970507
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns