Bagikan melalui


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