MSSQLSERVER_1505
Berlaku untuk: SQL Server
Detail
Atribut | Nilai |
---|---|
Nama Produk | SQL Server |
ID Peristiwa | 1505 |
Sumber Kejadian | MSSQLSERVER |
Komponen | SQLEngine |
Nama Simbolis | DUP_KEY |
Teks Pesan | CREATE UNIQUE INDEX dihentikan karena kunci duplikat ditemukan untuk nama objek '%.*ls' dan nama indeks '%.*ls'. Nilai kunci duplikat adalah %ls. |
Penjelasan
Kesalahan ini terjadi ketika Anda mencoba membuat indeks unik dan lebih dari satu baris dalam tabel berisi nilai duplikat yang ditentukan. Indeks unik dibuat saat Anda membuat indeks dan menentukan kata kunci UNIK, atau saat Anda membuat batasan UNIK. Tabel tidak boleh berisi baris apa pun yang memiliki nilai duplikat dalam kolom yang ditentukan dalam indeks atau batasan.
Pertimbangkan data dalam tabel Karyawan berikut ini:
LastName | FirstName | JobTitle | HireDate |
---|---|---|---|
Walters | Rampok | Desainer Alat Senior | 2004-11-19 |
Cokelat | Kevin | Asisten Pemasaran | NULL |
Cokelat | Jo | Design Engineer | NULL |
Walters | Rampok | Desainer Alat | 2001-08-09 |
Indeks unik tidak dapat dibuat pada kombinasi kolom LastName atau LastName, FirstName karena nilai duplikat dalam baris.
Kurang jelas adalah potensi pelanggaran keunikan di kolom HireDate . Untuk tujuan pengindeksan, nilai NULL dibandingkan sebagai sama. Oleh karena itu, Anda tidak dapat membuat indeks atau batasan unik jika nilai kunci NULL dalam lebih dari satu baris. Mengingat data di atas, indeks unik tidak dapat dibuat pada kombinasi kolom HireDate atau LastName, HireDate.
Pesan kesalahan 1505 mengembalikan baris pertama yang melanggar batasan keunikan. Mungkin ada baris duplikat lainnya dalam tabel. Untuk menemukan semua baris duplikat, kueri tabel yang ditentukan dan gunakan klausa GROUP BY dan HAVING untuk melaporkan baris duplikat. Misalnya, kueri berikut mengembalikan baris dalam tabel Karyawan yang memiliki nama depan dan belakang duplikat.
PILIH LastName, FirstName, count(*) FROM dbo. Grup Karyawan MENURUT LastName, FirstName HAVING count(*) > 1;
Tindakan Pengguna
Pertimbangkan solusi berikut.
Tambahkan atau hapus kolom dalam indeks atau definisi batasan untuk membuat komposit unik. Dalam contoh sebelumnya, menambahkan kolom MiddleName ke indeks atau definisi batasan mungkin menyelesaikan masalah duplikasi.
Pilih kolom yang didefinisikan sebagai NOT NULL saat Anda memilih kolom untuk indeks atau batasan unik. Ini menghilangkan kemungkinan pelanggaran keunikan yang disebabkan ketika lebih dari satu baris berisi NULL dalam nilai kunci.
Jika nilai duplikat adalah hasil dari kesalahan entri data, perbaiki data secara manual lalu buat indeks atau batasan. Untuk informasi tentang menghapus baris duplikat dalam tabel, tinjau Menghapus baris duplikat dari tabel SQL Server.
Lihat Juga
BUAT INDEKS (Transact-SQL)
Membuat Indeks Unik
Membuat Batasan Unik