Oprava: Se nezdaří úloha krok Pokud první INSERT z dávková úloha setká chybová zpráva 3604

Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.

295032
Tento článek byl archivován. Je nabízen v takovém stavu, v jakém je, a nebude již nadále aktualizován.
CHYBA Č: 351328 (SHILOH_BUGS)
CHYBA Č: 100729 (SQLBUG_70)
Příznaky
Pokud úloha obsahuje jeden příkazu INSERT na tabulce, která má jedinečný index s klauzulí IGNORE_DUP_KEY a INSERT porušuje vlastnost jedinečnosti index, není odpovídající řádek v tabulce vložen. Krok úlohy selže a zobrazí následující zpráva kroku historie úlohy:
Duplicitní klíč byl ignorován. [SQLSTATE 23000 (Zpráva 3604). V kroku se nezdařilo.
Protože tabulka má UNIQUE INDEX s IGNORE_DUP_KEY, ignorována příkazu INSERT a v kroku by měla proběhnout úspěšně.
Řešení
Tento problém vyřešíte pomocí nejnovější aktualizace service pack pro SQL Server 2000. Další informace získáte v následujícím článku znalostní báze Microsoft Knowledge Base:
290211INF: Jak získat nejnovější aktualizaci Service Pack pro SQL Server 2000
Jak potíže obejít
Pokud umístíte "fiktivní" SELECT, který vždy spustí úspěšně (například SELECT 1) pouze před příkazu INSERT selže s chybou 3604 krok úspěšný. Tento postup je znázorněn v části "Další informace".
Prohlášení
Společnost Microsoft potvrzuje, že se jedná o problém v produktech této společnosti, které jsou uvedeny na začátku tohoto článku. Tento problém byl poprvé opraven v SQL Server 2000 Service Pack 1.
Další informace

Kroky pro reprodukci chování

  1. Vytvoření tabulky Testování v databázi pubs a spusťte následující skript vložit řádek:
    USE pubsCREATE TABLE test(i int)CREATE UNIQUE INDEX uniq_t1_i on test(i) with IGNORE_DUP_KEYINSERT INTO test VALUES(1)					
  2. Vytvořit úlohu T-SQL v databázi pubs chcete vložit řádek v tabulce test:
    INSERT INTO pubs..test values(1)					
  3. Spustit úlohu. Úloha selže a historie úlohy kroku zobrazuje chyby uvedené v části "Příznaky".
  4. Všimněte si, že pokud jsme přidat úspěšné příkaz po INSERT, který nalezne chyba 3604:
    INSERT INTO pubs..test values(1)INSERT INTO pubs..test values(2)					
    kroku znovu nezdaří s následující chybou:
    Duplicitní klíč byl ignorován. [SQLSTATE 23000 (Zpráva 3604) Přidružené příkaz není připraven [SQLSTATE HY007] (chyba 0). V kroku se nezdařilo.
  5. Však Pokud jsme přidat úspěšné příkaz, který obsahuje výsledky před INSERT selže s chybou 3604:
    insert pubs..t1 values(3)insert pubs..t1 values(1)					
    krok úspěšný a vidíme následující zpráva:
    Duplicitní klíč byl ignorován. [SQLSTATE 23000 (Zpráva 3604). V kroku proběhlo úspěšně.

Upozornění: Tento článek byl přeložen automaticky

Vlastnosti

ID článku: 295032 - Poslední kontrola: 01/16/2015 22:16:59 - Revize: 3.2

  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
  • kbnosurvey kbarchive kbmt kbbug kbfix kbsqlserv2000sp1fix KB295032 KbMtcs
Váš názor