Update: Fehlermeldung in SQL Server 2008 beim Ausführen einer INSERT SELECT-Anweisung auf eine Tabelle: "Verletzung der PRIMARY KEY-Einschränkung < PrimaryKey >. Können keine doppelten Schlüssel im Objekt '< Tabellenname >' Einfügen"

Microsoft stellt Updates für Microsoft SQL Server 2008 als downloadbare Datei. Da die kumulativ sind, enthält jede neue Version alle Hotfixes und alle Sicherheitsupdates, die mit früheren SQL Server 2008 geliefert wurden.

Problembeschreibung

Betrachten Sie das folgende Szenario:
  • Sie haben Microsoft SQL Server 2008 auf einem Multiprozessor-Computer installiert.
  • Sie haben eine INSERT SELECT -Anweisung auf eine Tabelle mit einem Primärschlüssel.

    Hinweis In INSERT SELECT -Anweisung ist die Tabelle, die die Daten empfängt dieselbe Tabelle, die die Daten ausgegeben. Beispiel:
    INSERT T1 … SELECT T1
  • Sie verweisen auf andere Tabellen in INSERT SELECT -Anweisung. Diese Verweise sind temporäre Tabellen.

    Hinweis Die Tabellen in der FROM -Klausel referenziert oder Tabellen in einer Unterabfrage oder Join-Bedingung verwiesen wird.
Beim Ausführen der Anweisung wird die folgende Fehlermeldung angezeigt:

Msg 2627, Ebene 14, Status 1

Verletzung der PRIMARY KEY-Einschränkung 'Primärschlüssel'. Doppelten Schlüssel kann nicht in Objekt 'Tabellenname' eingefügt werden.

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

Hinweis Dieses Problem tritt auf, wenn die Anweisung UPDATE auswählen oder Löschen-SELECT -Anweisung ausführen.

Ursache

Dieses Problem tritt aufgrund eines Fehlers in der Spule Eager Spool -Operator, generiert die Spule mehr Zeilen als erwartet. Dadurch kann ein Problem mit doppelten Schlüssel.

Problemlösung

Kumulative Update-Informationen


Die Fehlerbehebung für dieses Problem wurde zuerst im kumulativen Update 3 für SQL Server 2008 Service Pack 1 veröffentlicht. Für weitere Informationen zu diesem kumulativen Update-Paket, klicken Sie auf die folgende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:
971491 kumulative Updatepaket 3 für SQL Server 2008 Service Pack 1
Hinweis Da diese Builds kumulativ sind, enthält jede neue Veröffentlichung alle Hotfixes und alle die Sicherheitsupdates, die in den vorherigen SQL Server 2008 Fix-Veröffentlichung enthalten waren. Microsoft empfiehlt, dass Sie prüfen die neueste Update-Version, die diesen Hotfix enthält. Klicken Sie für weitere Informationen auf die folgende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:
970365 die SQL Server 2008 builds, die nach der Freigabe von SQL Server 2008 Service Pack 1
Microsoft SQL Server 2008-Hotfixes sind für bestimmte SQL Server Servicepacks erstellt. Sie müssen SQL Server 2008 Service Pack 1-Hotfix eine Installation von SQL Server 2008 Service Pack 1 anwenden. Standardmäßig ist jeder Hotfix, der in einem SQL Server Servicepack bereitgestellt wird, in einem nächsten Servicepack für SQL Server enthalten.

Hotfix-Informationen

Ein unterstützter Hotfix ist inzwischen von Microsoft erhältlich. Es soll jedoch nur das Problem beheben, das in diesem Artikel beschrieben wird. Wenden Sie es nur auf Systeme an, bei denen dieses spezielle Problem auftritt. Dieser Hotfix wird möglicherweise noch getestet. Wenn Ihr System durch dieses Problem nicht schwerwiegend beeinträchtigt ist, empfehlen wir, das nächste SQL Server 2008 Servicepack warten, das diesen Hotfix enthält.

Wenn dieses Problem sofort beheben möchten, wenden Sie sich an Microsoft Support Services, um den Hotfix zu erhalten. Eine vollständige Liste der Telefonnummern des Microsoft Product Support Services und Informationen zu den Supportkosten finden Sie auf der folgenden Microsoft-Website:Hinweis In bestimmten Fällen können Gebühren, die normalerweise für Support-Anrufe anfallen abgebrochen werden, wenn ein Microsoft-Supportmitarbeiter feststellt, dass ein bestimmtes Update Ihr Problem behebt. Die normalen Supportkosten gilt für zusätzliche Supportfragen und Probleme, die nicht für das betreffende Update qualifizieren.

Voraussetzungen

Um diesen Hotfix anwenden zu können, benötigen Sie einen Computer, der SQL Server 2008 Service Pack 1 (SP1) ausgeführt wird.

Informationen zum Neustart

Sie müssen keinen Neustart des Computers nach der Installation dieses Hotfixes durchführen.

Informationen zur Registrierung

Sie haben nicht die Registrierung ändern.

Hotfix-Informationen

Dieser Hotfix enthält nur die Dateien, die in diesem Artikel beschriebenen Probleme zu beheben. 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 Dateiattribute (oder spätere Attribute), die in der folgenden Tabelle aufgelistet sind. Die Datums- und Uhrzeitangaben für diese Dateien sind in Coordinated Universal Time (UTC) aufgelistet. Wenn Sie die Dateiinformationen anzeigen, werden sie in die lokale Zeit konvertiert. Um die Differenz zwischen UTC und der Ortszeit zu finden, verwenden Sie die Registerkarte Zeitzone unter Datum und Uhrzeit in der Systemsteuerung.
Für alle unterstützten X86-basierte Versionen von SQL Server 2008-Datenbank-Engine
DateinameDateiversionDateigrößeDatumZeitPlattform
Sqlaccess.dll2007.100.2712.0405,35213-May-200917:53x86
Keyfile.dll2007.100.2712.013,65613-May-200915:37x86
Sqlservr.exe2007.100.2712.042,729,32013-May-200917:56x86
Für alle unterstützten Versionen von SQL Server 2008 Analysis Services-basierten x86
DateinameDateiversionDateigrößeDatumZeitPlattform
Msmdlocal.dll10.0.2712.023,461,72013-May-200916:08x86
Msmdsrv.exe10.0.2712.021,955,41613-May-200916:09x86
Keyfile.dll2007.100.2712.013,65613-May-200915:37x86
Msmdpump.dll10.0.2712.06,180,69613-May-200916:08x86
Msmdspdm.dll10.0.2712.0178,00813-May-200916:08x86
Msmgdsrv.dll10.0.2712.08,558,93613-May-200916:09x86
Msolap100.dll10.0.2712.06,532,95213-May-200916:09x86
Für alle unterstützten X64-basierte Versionen von SQL Server 2008-Datenbank-Engine
DateinameDateiversionDateigrößeDatumZeitPlattform
Sqlaccess.dll2007.100.2712.0412,00814-May-200901:15x86
Keyfile.dll2007.100.2712.014,18413-May-200923:55x64
Sqlservr.exe2007.100.2712.057,873,25614-May-200901:17x64
Für alle unterstützten Versionen von SQL Server 2008 Analysis Services-basierten x64
DateinameDateiversionDateigrößeDatumZeitPlattform
Msmdlocal.dll10.0.2712.023,461,72013-May-200916:08x86
Msmdlocal.dll10.0.2712.044,436,82414-May-200900:10x64
Msmdsrv.exe10.0.2712.043,713,36814-May-200900:10x64
Keyfile.dll2007.100.2712.014,18413-May-200923:55x64
Msmdpump.dll10.0.2712.07,430,48814-May-200900:10x64
Msmdspdm.dll10.0.2712.0178,02414-May-200900:10x86
Msmgdsrv.dll10.0.2712.08,558,93613-May-200916:09x86
Msmgdsrv.dll10.0.2712.012,332,37614-May-200900:11x64
Msolap100.dll10.0.2712.06,532,95213-May-200916:09x86
Msolap100.dll10.0.2712.08,153,94414-May-200900:11x64
Für alle unterstützten Itanium-basierten Versionen von SQL Server 2008-Datenbank-Engine
DateinameDateiversionDateigrößeDatumZeitPlattform
Sqlaccess.dll2007.100.2712.0398,69613-May-200917:01x86
Keyfile.dll2007.100.2712.019,30413-May-200915:26IA-64
Sqlservr.exe2007.100.2712.0111,042,40813-May-200917:08IA-64
Für alle unterstützten Itanium-basierten Versionen von SQL Server 2008 Analysis Services
DateinameDateiversionDateigrößeDatumZeitPlattform
Msmdlocal.dll10.0.2712.023,461,72013-May-200916:08x86
Msmdlocal.dll10.0.2712.057,508,18413-May-200915:44IA-64
Msmdsrv.exe10.0.2712.058,860,88813-May-200915:46IA-64
Keyfile.dll2007.100.2712.019,30413-May-200915:26IA-64
Msmdpump.dll10.0.2712.08,943,44813-May-200915:45IA-64
Msmdspdm.dll10.0.2712.0178,00813-May-200915:45x86
Msmgdsrv.dll10.0.2712.015,485,80013-May-200915:47IA-64
Msmgdsrv.dll10.0.2712.08,558,93613-May-200916:09x86
Msolap100.dll10.0.2712.010,065,24013-May-200915:47IA-64
Msolap100.dll10.0.2712.06,532,95213-May-200916:09x86

PROBLEMUMGEHUNG

Um dieses Problem zu umgehen, setzen Sie MAXDOP-Option oder des Abfragehinweises MAXDOP 1 die Anweisung oder der server

Hinweis Die Serverebene MAXDOP Option beeinflusst die Leistung aller Abfragen, die auf dem Server ausgeführt.

Status

Microsoft hat bestätigt, dass es sich um ein Problem bei den Microsoft-Produkten handelt, die im Abschnitt „Eigenschaften“ aufgeführt sind.

Referenzen

Weitere Informationen zum inkrementellen Dienstmodell für SQL Server klicken Sie auf die folgenden Artikelnummer der Microsoft Knowledge Base:

935897 erläutert wird ein inkrementelles Dienstmodell steht der SQL Server-Team zu Hotfixes für gemeldete Probleme



Weitere Informationen zum Benennungsschema für SQL Server-Updates klicken Sie auf die folgenden Artikelnummer der Microsoft Knowledge Base:

822499 Neues Benennungsschema für Softwareupdatepakete für Microsoft SQL Server


Um weitere Informationen zur Terminologie für Softwareupdates zu erhalten, klicken Sie auf die folgende Artikelnummer, um den Artikel der Microsoft Knowledge Base anzuzeigen:
824684 Erläuterung von der standardmäßigen Standardbegriffen bei Microsoft Softwareupdates
Eigenschaften

Artikelnummer: 970507 – Letzte Überarbeitung: 13.01.2017 – Revision: 1

Feedback