Benzersiz dizinler oluşturun
Bu konuda nasıl bir tablo benzersiz bir dizin oluşturmak için açıklar SQL Server 2012kullanarak SQL Server Management Studioya Transact-SQL. Benzersiz dizin, yinelenen değerlerin dizin anahtarı içerir ve bu nedenle tablodaki her satırı benzersiz şekilde olduğunu garanti eder. UNIQUE sınırlamasıyla oluşturma ve bir kısıtlaması bağımsız olan benzersiz bir dizin oluşturma arasında hiçbir önemli farklılıklar vardır. Aynı şekilde veri doğrulama oluşur ve sorgu en iyi duruma getiricisi tarafından bir kısıtlama veya el ile oluşturulan benzersiz bir dizin arasında ayrım yapmaz. Ancak, sütun UNIQUE sınırlamasıyla oluşturma hedefi açık dizin yapar. UNIQUE kısıtlamaları ile ilgili daha fazla bilgi için bkz: UNIQUE kısıtlamaları ve Check kısıtlamaları.
Benzersiz bir dizin oluşturduğunuzda, yinelenen anahtarlar yoksay seçeneği ayarlayabilirsiniz. Bu seçenek ayarlanırsa Evet ve sizin girişimi (INSERT deyimi ile) birden çok satır etkiler veri ekleyerek yinelenen anahtarlar oluşturmak, yinelenen içeren satır eklenmez. O eğer No, tüm ekleme işlemi başarısız olur ve tüm verileri geri alındı.
[!NOT]
Bu sütun birden çok satırda boş değer içeriyorsa, tek bir sütun üzerinde benzersiz bir dizin oluşturamazsınız. Benzer şekilde, sütun birleşimi birden çok satırda boş değer içeriyorsa, birden çok sütun üzerinde benzersiz bir dizin oluşturamazsınız. Bu dizin oluşturma amaçları için yinelenen değerleri olarak kabul edilir.
Bu Konuda
Başlamadan Önce
Benzersiz bir dizin yararları
Tipik uygulamaları
Sınırlamalar ve Kısıtlamalar
Güvenlik
Tablo benzersiz bir dizin oluşturma için kullanma:
SQL Server Management Studio
Transact-SQL
Başlamadan Önce
Benzersiz bir dizin yararları
Birden çok sütun benzersiz dizinler dizin anahtar değerleri her birleşimini benzersiz olmasını garanti. Örneğin, benzersiz bir dizin üzerinde bir kombinasyonu oluşturduysanız Soyadı, ad, ve MiddleName sütunlar, hiçbir iki satır tablosundaki bu sütunların değerleri aynı kombinasyonu sahip.
Her sütundaki verilerin benzersiz olması koşuluyla, aynı tabloda benzersiz kümelenmiş dizin ve birden çok benzersiz kümelendirilmemiş dizinler oluşturabilirsiniz.
Benzersiz dizinler tanımlanmış sütunlar veri bütünlüğü sağlamak.
Benzersiz dizinler daha verimli yürütme planları üretebildiği sorgu iyileştirici yararlı ek bilgi sağlar.
Tipik uygulamaları
Benzersiz dizinler, aşağıdaki yollarla uygulanır:
PRIMARY key veya UNIQUE sınırlaması
PRIMARY key kısıtlaması oluşturduğunuzda, benzersiz kümelenmiş dizin sütun veya sütunları tablo kümelenmiş bir dizin zaten var olmayan ve benzersiz kümelendirilmemiş dizin belirtmezseniz, otomatik olarak oluşturulur. Birincil anahtar sütunu null değerlere izin veremez.
BENZERSİZ kısıtlama oluşturduğunuzda, benzersiz kümelendirilmemiş dizin varsayılan olarak benzersiz kısıtlamayı zorlamak için oluşturulur. Tablo kümelenmiş bir dizin zaten mevcut değilse, benzersiz kümelenmiş dizin belirtebilirsiniz.
Daha fazla bilgi için PRIMARY KEY Constraintsve UNIQUE Constraints.
Dizin bağımsız bir sınırlama
Birden çok benzersiz kümelendirilmemiş dizinler bir tabloda tanımlanır.
Daha fazla bilgi için, bkz. Index (Transact-sql) oluştur.
Dizin oluşturulmuş görünüm
Dizin oluşturulmuş görünüm oluşturmak için benzersiz kümelenmiş dizin, bir veya daha çok görünümü sütunları tanımlanır. Görünüm yürütülür ve sonuç kümesi dizin yaprak düzeyini kümelenmiş bir dizin içinde saklanan tablo verileri aynı şekilde depolanır. Daha fazla bilgi için, bkz. Dizin oluşturulmuş görünümler oluşturma.
Sınırlamalar ve Kısıtlamalar
Verilerde yinelenen anahtar değerleri yoksa, bir benzersiz dizin, benzersiz kısıtlama veya PRIMARY key kısıtlaması oluşturulamaz.
Benzersiz kümelendirilmemiş dizin nonkey sütunlar içerebilir. Daha fazla bilgi için, bkz. Eklenen sütunlar ile dizin oluşturmak.
Güvenlik
İzinler
Tablo veya görünümde ALTER izni gerektirir. Kullanıcı-meli var olmak a üye sysadmin sabit sunucu rolü veya db_ddladmin ve db_owner veritabanı rolleri sabit.
[Top]
SQL Server Management Studio Kullanarak
Tablo Tasarımcısı'nı kullanarak benzersiz bir dizin oluşturmak için
Nesne Gezgini'nde benzersiz bir dizin oluşturmak istediğiniz tabloyu içeren veritabanı genişletin.
Genişletme tablo ağıl.
Ve benzersiz bir dizin oluşturmak istediğiniz tabloyu sağ Tasarım.
Tarih Tablo Tasarımcısı Seç menüsünden Dizinler/Anahtarlar.
İçinde Dizinler/Anahtarlar iletişim kutusunda, tıklatın Ekle.
İçinde yeni bir dizin seçin Seçili birincil ve Unique tuşu veya dizini metin kutusu.
Ana kılavuz altında **(genel)**seçin türü ve seçin dizini listeden.
Seçin sütunve sonra tıklatın üç nokta (...).
İçinde Dizin sütunları iletişim kutusunun altında Sütun adı, dizine eklemek istediğiniz sütunları seçin. 16 Sütunları seçebilirsiniz. En iyi performans için dizin başına yalnızca bir veya iki sütun seçin. Seçtiğiniz her sütun için dizin değerleri bu sütunun artan veya azalan düzende düzenler olup olmadığını gösterir.
Dizin için tüm sütunları seçili olduğunda tıklayın Tamam.
Kılavuz altında **(genel)**seçin Olan benzersiz ve seçin Evet listeden.
İsteğe bağlı: Ana kılavuzunda yer altında Tablo Tasarımcısıseçin Yinelenen anahtarlar yoksay ve seçin Evet listeden. Yinelenen anahtar içinde benzersiz bir dizin oluşturacak veri eklemek için girişimleri yoksaymak istiyorsanız bunu.
Tıklayın yakın.
Tarih dosyasını menüsünden tıklatın kaydetmektable_name.
Nesne Gezgini'ni kullanarak benzersiz bir dizin oluşturma
Nesne Gezgini'nde benzersiz bir dizin oluşturmak istediğiniz tabloyu içeren veritabanı genişletin.
Genişletme tablo ağıl.
Benzersiz bir dizin oluşturmak istediğiniz tablo genişletin.
Sağ Dizinler klasörüne gelin Yeni bir dizinve Non-Clustered Index….
İçinde Yeni bir dizin iletişim kutusunu Genel sayfasında, yeni dizin adını dizin adı kutusu.
Seçin özel onay kutusu.
Altında dizin anahtar sütunları, tıklayın Ekle….
İçinde Seçin sütunlarından table_name iletişim kutusunda, onay kutusunu veya tablo sütunu veya benzersiz dizine eklenecek sütunların onay kutularını seçin.
Click OK.
İçinde Yeni bir dizin iletişim kutusunda, tıklatın Tamam.
[Top]
Transact-SQL'i Kullanma
Bir tablo benzersiz bir dizin oluşturmak için
İçinde Object Explorer, örneğine bağlanmak Veritabanı Altyapısı.
Standart çubuğunda Yeni sorgu.
Kopyalama ve aşağıdaki örnek sorgu penceresine yapıştırın ve tıkırtı Execute.
USE AdventureWorks2012; GO -- Find an existing index named AK_UnitMeasure_Name and delete it if found IF EXISTS (SELECT name from sys.indexes WHERE name = N'AK_UnitMeasure_Name') DROP INDEX AK_UnitMeasure_Name ON Production.UnitMeasure; GO -- Create a unique index called AK_UnitMeasure_Name -- on the Production.UnitMeasure table using the Name column. CREATE UNIQUE INDEX AK_UnitMeasure_Name ON Production.UnitMeasure (Name); GO
Daha fazla bilgi için, bkz. Index (Transact-sql) oluştur.
[Top]