Update: Auftrag Schritt schlägt INSERT wenn zuerst der Stapelverarbeitung trifft einen Fehlermeldung 3604-Fehler

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 295032 - Produkte anzeigen, auf die sich dieser Artikel bezieht
# FEHLER: 351328 (SHILOH_BUGS)
# FEHLER: 100729 (SQLBUG_70)
Alles erweitern | Alles schließen

Auf dieser Seite

Problembeschreibung

Wenn eine Auftrag enthält eine einzelne INSERT-Anweisung in einer Tabelle, die einen eindeutigen Index mit die IGNORE_DUP_KEY-Klausel verfügt, und die INSERT verstößt die Eindeutigkeit-Eigenschaft den Index gegen, wird die entsprechende Zeile nicht in der Tabelle eingefügt. Die Auftrag-Schritt schlägt fehl, und Sie die folgende Meldung im Verlauf Auftrag-Schritt angezeigt:
Doppelter Schlüssel wurde ignoriert. [SQLSTATE 23000] (Nachricht 3604). Fehler bei Schritt.
Da die Tabelle eine UNIQUE-INDEX mit IGNORE_DUP_KEY hat, sollte die INSERT-Anweisung ignoriert werden und die Schritt sollte erfolgreich sein.

Lösung

Beziehen Sie das neueste Service Pack für SQL Server 2000, um dieses Problem zu beheben. Weitere Informationen finden Sie die folgende KB-Artikelnummer:
290211Info: Wie Sie das neueste SQL Server 2000 Service Pack erhalten

Abhilfe

Wenn Sie eine "dummy" SELECT-Anweisung platzieren, die immer erfolgreich (z. B. SELECT 1) führt erfolgreich nur vor der INSERT-Anweisung, die mit dem 3604-Fehler der Schritt fehlschlägt. Dies ist in den Abschnitt "Weitere Informationen" veranschaulicht.

Status

Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den in diesem Artikel genannten Microsoft-Produkten handelt. Dieses Problem wurde erstmals im SQL Server 2000 Service Pack 1.

Weitere Informationen

Schritte zum Reproduzieren des Verhaltens

  1. In der Pubs -Datenbank Erstellen einer Tabelle Testen das folgende Skript zum Einfügen eine Zeile und führen:
    USE pubs
    CREATE TABLE test(i int)
    CREATE UNIQUE INDEX uniq_t1_i on test(i) with IGNORE_DUP_KEY
    INSERT INTO test VALUES(1)
    					
  2. Erstellen Sie ein T-SQL-Auftrag in der Pubs -Datenbank einfügen eine Zeile in Tabelle Testen :
    INSERT INTO pubs..test values(1)
    					
  3. Führen Sie die Auftrag. Die Auftrag schlägt fehl, und der Auftrag Schritt Verlauf zeigt der Fehler im Abschnitt "Problembeschreibung" aufgeführt.
  4. Beachten Sie, wenn wir eine erfolgreiche Anweisung nach der INSERT hinzufügen, die einen 3604 Fehler entdeckt:
    INSERT INTO pubs..test values(1)
    INSERT INTO pubs..test values(2)
    					
    die Schritt erneut ausfällt, mit dem folgenden Fehler:
    Doppelter Schlüssel wurde ignoriert. [SQLSTATE 23000] (Nachricht 3604) Die zugeordnete Anweisung ist nicht vorbereitet [SQLSTATE HY007] (Fehler 0). Fehler bei Schritt.
  5. Wenn wir hinzufügen eine erfolgreiche-Anweisung mit führt jedoch bevor die INSERT, die mit dem Fehler 3604 fehlschlägt:
    insert pubs..t1 values(3)
    insert pubs..t1 values(1)
    					
    der Schritt erfolgreich, und wir die folgende Meldung angezeigt:
    Doppelter Schlüssel wurde ignoriert. [SQLSTATE 23000] (Nachricht 3604). Die Schritt war erfolgreich.

Eigenschaften

Artikel-ID: 295032 - Geändert am: Dienstag, 28. Oktober 2003 - Version: 3.2
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
Keywords: 
kbmt kbbug kbfix kbsqlserv2000sp1fix KB295032 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: 295032
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

 

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