ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Bir iş IGNORE_DUP_KEY yan tümcesi ile birlikte benzersiz bir dizin olan bir tabloda tek bir INSERT deyimi içerir ve dizini benzersizlik özelliğini INSERT ihlal, karşılık gelen satır tabloda eklenmez. Işlem adımı başarısız ve iş adım geçmişini'nda aşağıdaki iletiyi görürsünüz:
Yinelenen anahtarı yok sayıldı. [sqlstate 23000] (Ileti 3604). Adım başarısız oldu.
Tablo bir UNIQUE INDEX IGNORE_DUP_KEY sahip olduğundan, INSERT deyimi yoksayıldı ve adım başarılı olması.
Çözüm
Bu sorunu gidermek için <a0></a0>, SQL Server 2000 için en son hizmet paketini edinin. Ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
290211BILGI: en son SQL Server 2000 hizmet paketi nasıl elde edilir
Pratik Çözüm
Her zaman başarıyla (SELECT 1 gibi) çalışır bir "kukla" SELECT deyimi koyarsanız, yalnızca önce adım 3604 hatasıyla başarısız olan bir INSERT deyimi başarılı olur. Bu "Daha fazla bilgi" bölümünde gösterilmektedir.
Durum
Microsoft, bu makalenin başında listelenen Microsoft ürünlerinde bir sorun olduğunu onaylamıştır. Bu sorun ilk olarak SQL Server 2000 Service Pack 1'de giderilmiştir.
Daha fazla bilgi
Davranışı yeniden oluşturma için gereken adımları
Pubs veritabanındaki bir tablonun test ' ı oluşturma ve bir satır eklemek için aşağıdaki komut dosyası yürütme:
USE pubsCREATE TABLE test(i int)CREATE UNIQUE INDEX uniq_t1_i on test(i) with IGNORE_DUP_KEYINSERT INTO test VALUES(1)
Tablo test bir satır eklemek için pubs veritabanındaki bir T-SQL oluşturmak:
INSERT INTO pubs..test values(1)
Iş çalıştırın. Işi başarısız olur ve "Belirtiler" bölümünde listelenen hata iş adım geçmişini gösterir.
Not INSERT başarılı bir ifadenin ekledik, bir 3604 hatasıyla karşılaşır:
INSERT INTO pubs..test values(1)INSERT INTO pubs..test values(2)
adım yeniden aşağıdaki hata ile başarısız olur:
Yinelenen anahtarı yok sayıldı. [sqlstate 23000] (Ileti 3604) [SQLSTATE HY007] ilgili ifade hazır değil (hata 0). Adım başarısız oldu.
Ekledik, ancak olan başarılı bir deyimi önce 3604 hatası ile başarısız olan bir INSERT oluşur: