Makale numarası: 139444 - Son Gözden Geçirme: 18 Şubat 2011 Cuma - Gözden geçirme: 5.0 SQL Server'da bir tablodaki yinelenen satırları kaldırma
Özet
Microsoft SQL Server tabloları hiçbir zaman yinelenen satırlar veya benzersiz olmayan birincil anahtarlar içermemelidir. Kısaltma amacıyla bu makalede birincil anahtarlar yerine zaman zaman "anahtar" veya "BA" terimi kullanılacaktır, ancak bu terimler her zaman "birincil anahtar" anlamına gelmektedir. Yinelenen BA'lar varlık tutarlılığını ihlal eder, bu nedenle ilişkisel bir sistemde yinelenen BA'lara izin verilmemelidir. SQL Server'da varlık tutarlılığı uygulanmasını zorlamak için dizinler, UNIQUE kısıtlamaları, PRIMARY KEY kısıtlamaları ve tetikleyiciler gibi çeşitli mekanizmalar kullanılır. Buna karşın, beklenmedik durumlarda yinelenen birincil anahtarlar oluşabilir ve bunların ortadan kaldırılması gerekir. Yinelenen birincil anahtarların oluşmasına yol açan durumlardan biri de SQL Server dışındaki ilişkisel olmayan verilerde yinelenen BA'ların bulunması ve bu verilerin BA benzersizliğinin zorlanmadığı bir sırada alınmasıdır. Ayrıca, bunlar her bir tabloda varlık tutarlılığını zorlamamak gibi bir veritabanı tasarım hatası nedeniyle de oluşabilir. Yinelenen BA'lar genellikle, benzersiz bir dizin oluşturulmaya çalışılırken yinelenen anahtarlar bulunursa yürütülen işlemin iptal edilmesi sonucunda fark edilir. Şu ileti alınır:
Msg 1505, Level 16, State 1 Create unique index aborted on duplicate key.
Msg 1505, Level 16, State 1 CREATE UNIQUE INDEX terminated because a duplicate key was found for object name '%.*ls' and index name '%.*ls'. The duplicate key value is %ls.
Daha fazla bilgi
Bu örnekte, yinelenen BA değerleri içeren aşağıdaki tabloyu kullanacağız. Bu tabloda birincil anahtar iki sütundur (col1, col2). İki satırda yinelenen BA olduğu için benzersiz dizin veya PRIMARY KEY kısıtlaması oluşturulamaz. Bu yordamda, yinelenen kopyaların nasıl belirleneceği ve kaldırılacağı gösterilmektedir.
Bu tabloyu kapa
Yalnızca birkaç yinelenen BA değeri kümesi varsa, en uygun yordam, bunları el ile tek tek silmektir. Örneğin: Satırları silmeden önce, tüm satırın yinelendiğini doğrulamalısınız. nadiren de olsa, BA değerleri yinelenmekle birlikte satırın tümü yinelenmiyor olabilir. Birincil anahtar olarak Sosyal Güvenlik Numarası değerinin yer aldığı ve her biri ayrı özniteliklere sahip olan iki farklı kişinin (veya satırın) bulunduğu bir tablo bu duruma örnek olarak gösterilebilir. Bu durumda, yinelenen hataya neden olan sorun, satıra geçerli benzersiz verilerin yerleştirilmesine de neden olmuş olabilir. Bu veriler silinmeden önce, gerektiğinde araştırma ve karşılaştırma amacıyla kullanılmak üzere başka bir yere kopyalanmalıdır. Tabloda birbirinden farklı çok sayıda yinelenen BA değeri kümesi varsa, bunların tek tek kaldırılması uzun zaman alabilir. Bu durumda, aşağıdaki yordam kullanılabilir:
Bu makaledeki bilginin uygulandığı durum:
| Diğer Kaynaklar Diğer Destek Siteleri
ToplulukHemen Yardım AlMakale çevirileri
|






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email
Üste