MSSQLSERVER_1505

Şunlar için geçerlidir: SQL Server

Details

Attribute Value
Ürün Adı SQL Server
Olay Kimliği 1505
Olay Kaynağı MSSQLSERVER
Bileşen SQLEngine
Sembolik Ad DUP_KEY
İleti Metni CREATE UNIQUE INDEX , nesne adı '%.*ls' ve indeks adı '%.*ls' için tekrarlanan bir anahtar bulunduğundan sonlandırıldı. Yinelenen anahtar değeri %ls.

Explanation

Bu hata, benzersiz bir indeks oluşturmaya çalıştığınızda ve tablodaki birden fazla satır belirtilen çoğaltma değeri içerdiğinde ortaya çıkar. Bir indeks, bir indeks oluşturup UNIQUE anahtar kelimesini belirttiğinizde veya UNIQUE bir kısıtlama oluşturduğunuzda oluşturulur. Tablo, indeks veya kısıtlamada tanımlanan sütunlarda tekrarlanan değerlere sahip satır içeremez.

Aşağıdaki Çalışan tablosunda verileri ele alın:

Soyadı İlk İsim İş Unvanı Hiredate
Walters Ramiz Kıdemli Araç Tasarımcısı 2004-11-19
Kahverengi Kevin Pazarlama Asistanı null
Kahverengi Jo Tasarım Mühendisi null
Walters Ramiz Araç Tasarımcısı 2001-08-09

Satırlardaki tekrarlanan değerler nedeniyle Soyadı veya Soyad, İlk Adı sütun kombinasyonlarında benzersiz bir indeks oluşturulamaz.

Daha az belirgin olan ise HireDate sütununda benzersizlik ihlali olasılığıdır. Indeksleme amaçları için, NULL değerler eşit olarak karşılaştırılır. Bu nedenle, anahtar değerler birden fazla satırda NULL ise, benzersiz bir indeks veya kısıtlama oluşturamazsınız. Yukarıdaki veriler göz önüne alındığında, HireDate veya LastName, HireDate sütun kombinasyonlarında benzersiz bir indeks oluşturulamaz.

1505 numaralı hata mesajı, tekillik kısıtlamasını ihlal eden ilk satırı döndürür. Tabloda başka tekrarlanan satırlar da olabilir. Tüm tekrarlanan satırları bulmak için, belirtilen tabloyu sorgulayın ve GROUP BY ile HAVING cümlelerini kullanarak tekrarlanan satırları raporlayın. Örneğin, aşağıdaki sorgu, Çalışan tablosunda çoğalan ad ve soyadların çoğaltılmış satırlarını döndürür.

Soyad, İlk İsim, sayı(*) dbo'dan SEÇİN. Çalışan GRUBU Soyadla, Birinci Adı SAYI (*) > 1;

Kullanıcı Eylemi

Aşağıdaki çözümleri düşünün.

  • Benzersiz bir kompozit oluşturmak için indeks veya kısıtlama tanımında sütunlar ekleyin veya çıkarın. Önceki örnekte, indeks veya kısıtlama tanımına bir MiddleName sütunu eklemek çoğaltma sorununu çözebilir.

  • Benzersiz bir indeks veya kısıtlama için sütun seçerken NULL OLMAYAN sütunları seçin. Bu, birden fazla satırın anahtar değerlerde NULL içermesi durumunda benzersizlik ihlali olasılığını ortadan kaldırır.

  • Eğer tekrarlanan değerler veri girişi hatalarından kaynaklanıyorsa, veri manuel olarak düzeltin ve ardından indeks veya kısıtlama oluşturun. Bir tablodaki tekrarlanan satırların kaldırılması hakkında bilgi için, SQL Server tablosundan tekrarlanan satırları kaldır seçeneğini inceleyin.