Sütun kümesi'ni kullanma
Seyrek sütunlarını tablo sütun belirleyebilirsiniz küme tabloda tüm sparse sütunları dönün.Bir sütunu küme bir tablonun tüm sparse sütunlar yapılandırılmış bir çıkış birleştiren bir türlenmemiş XML gösterimidir.Bir sütunu küme sütun, hesaplanmış bir sütunda benzer küme fiziksel olarak tabloda depolanır.Bir sütunu küme sütun, hesaplanmış bir sütunda farklı küme doğrudan güncelleştirilebilir.
Sütunu kullanarak, ayarlar göz önüne alınması gereken sütun sayısını bir tablo büyük olduğunu ve üzerlerinde tek tek işletim hantal.Uygulamalar, seçin ve çok sayıda sütun olan tablolarda sütun kümelerini kullanarak veri ekleme, bazı performans geliştirme görebilirsiniz.Fazla dizin sütunlarında tanımlandığında ancak sütun kümelerinin performans azalır tablo.Yürütme planı için gerekli olan bellek miktarını artırır olmasıdır.
Bir sütun tanımlamak için küme, kullanın <column_küme_name> Anahtar sözcükler ALL_SPARSE_COLUMNS FORTABLO OLUŞTURMA or TABLO DEĞİŞTİRME deyimleri.
Sütun kümesi kullanma yönergeleri
Sütun kümelerini kullandığınızda, aşağıdaki yönergeleri dikkate alın:
Seyrek sütunlar ve sütun küme aynı ifadesinin bir parçası olarak eklenebilir.
Sütun küme değiştirilemez.Bir sütununu değiştirmek için küme, silme ve sütunu yeniden küme.
Bir sütunu küme sparse sütun o tabloyu içeriyorsa, bir tabloya eklenemiyor.
Bir sütunu küme sparse sütun içeren bir tabloya eklenebilir.Seyrek sütunlar, daha sonra tabloya eklenir, sütun görünür küme.
Tek bir sütun küme her tablo için izin verilir.
Bir sütunu küme isteğe bağlıdır ve seyrek sütunları kullanmak gerekli değildir.
Kısıtlamaları veya varsayılan değerleri bir sütun tanımlanamaz küme.
Sütunları, sütun içeremez hesaplanan küme sütunlar.
Dağıtılmış sorgular sütun kümelerini içeren tablolarda desteklenmiyor.
Çoğaltma, sütun kümelerini desteklemez.
Veri yakalama değişiklik sütun kümelerini desteklemez.
Bir sütunu küme herhangi bir türdeki dizin parçası olamaz.Bu, XML dizin, tam metin dizinleri ve dizin oluşturulmuş görünümler içerir.Bir sütunu küme herhangi bir dizinde bulunan bir sütun eklenemiyor.
Bir sütunu küme süzülmüş dizin ya da süzülmüş istatistikleri süzgeç ifadesi içinde kullanılamaz.
Bir görünümü'ne zaman bir sütun içerir küme, sütun küme bir XML sütun olarak görünümü görüntülenir.
Bir dizinli görünüm tanımında BIR sütun kümesi dahil edilemez.
Sütun kümesi içeren bir tablo içeren bölümlendirilmiş görünüm güncelleştirilebilir olur bölümlendirilmiş görünüm sparse sütun adına göre belirtir.Bölümlenmiş görünümün sütun başvurduğunda güncelleştirilemez küme.
Sütun kümesi için başvuran bir sorgu bildirimleri izin verilmez.
XML verilerini 2 GB boyut sınırı vardır.Tüm sütunların nonnull seyrek bir satırda olarak birleştirilmiş verileri bu sınırı aşıyorsa, sorgu veya DML işlemi bir hata üretecektir.
COLUMNS_UPDATED işlev tarafından döndürülen veriler hakkında daha fazla bilgi için bkz: Seyrek sütunları kullanma.
Bir sütun veri seçme kuralları küme
Bir sütundaki verileri seçmek için aşağıdaki yönergeleri dikkate küme:
Kavramsal açıdan, bir sütun küme toplayan XML sütun güncelleştirilebilir, hesaplanan bir tür bir küme, tek bir XML gösteriminde temel ilişkisel sütunlara.Sütun küme yalnızca ALL_SPARSE_COLUMNS özelliği destekler.Bu özellik, belirli bir satır için tüm sparse sütunlarından nonnull olan tüm değerleri toplamak için kullanılır.
Içinde SQL Server Management Studio tablo Düzenleyicisi, sütun kümeleri bir düznle tablo XML alan olarak görüntülenir. Sütun kümesi biçiminde tanımlayın:
<column_name_1>value1</column_name_1><column_name_2>value2</column_name_2>...
Sütun örnekleri küme değerler aşağıdaki gibidir:
<sparseProp1>10</sparseProp1><sparseProp3>20</sparseProp3>
<DocTitle>Bicycle Parts List</DocTitle><Region>West</Region>
Seyrek boş değer içeren sütunları, sütun için XML gösteriminde gelen atlanmış küme.
Uyarı
Bir sütun ekleyerek, değişiklikleri SELECT davranışını küme * sorgular.Sorguya sütun döndürecektir küme bir XML sütun olarak ve seyrek sütunları tek tek geri dönün.Şema tasarımcıları ve yazılım geliştiricileri, varolan uygulamaları ayırmak dikkatli olmalısınız.
Ekleme ya da bir sütun içinde veri değiştirme küme
Seyrek bir sütunun veri işleme sütunları tek tek adını kullanarak ya da sütunun adını başvuran tarafından gerçekleştirilebilecek küme sütun değerlerini belirterek küme sütunu XML biçimini kullanarak küme.Seyrek sütun XML sütunundaki herhangi bir sırada görünebilir.
Ne zaman sparse sütun değerlerini eklenen veya XML sütun kullanarak güncelleştirildi küme, temel sparse sütunlara eklenen değerleri arasında örtülü olarak dönüştürülür xml Veri Türü. Sayısal sütunlar durumunda, sayısal sütun XML'de boş bir değer boş bir dizeye dönüştürür.Bu, aşağıdaki örnekte gösterildiği gibi sayısal bir sütuna eklenecek sıfır olur.
CREATE TABLE t (i int SPARSE, cs xml column_set FOR ALL_SPARSE_COLUMNS)
GO
INSERT t(cs) VALUES ('<i/>')
GO
SELECT i FROM t
GO
Örneğin, sütun için hiçbir değer belirtilmedi. i, ancak değer 0 eklenmiştir.
Sql_variant veri türü olarak kullanma
The sql_variant tarih type can store multiple different data types, such as int, char, and date. Ilişkili olduğu ölçek, duyarlık ve yerel ayar bilgileri gibi bilgileri veri türü çıktı sütun ayarlar bir sql_variant oluşturulan XML sütununda öznitelikleri değeri. Bir sütun ekleme veya güncelleştirme işlemi için bir giriş olarak bir özel olarak oluşturulan XML bildirisi bu öznitelikleri sağlamak çalışırsanız küme bazıları varsayılan değer olarak atanır ve bu özniteliklerin bazıları gereklidir.Aşağıdaki tablo, veri türleri ve değer yok olarak sağlandığında, sunucu varsayılan değerlerini listeler.
Veri türü |
localeID * |
sqlCompareOptions |
sqlCollationVersion |
SqlSortId |
En fazla uzunluğu |
Duyarlık |
Ölçek |
---|---|---|---|---|---|---|---|
char, varchar, binary |
-1 |
'Default' |
0 |
0 |
8000 |
Uygulanamaz ** |
Geçerli değil |
nvarchar |
-1 |
'Default' |
0 |
0 |
4000 |
Geçerli değil |
Geçerli değil |
decimal, float, real |
Geçerli değil |
Geçerli değil |
Geçerli değil |
Geçerli değil |
Geçerli değil |
18 |
0 |
integer, bigint, tinyint, smallint |
Geçerli değil |
Geçerli değil |
Geçerli değil |
Geçerli değil |
Geçerli değil |
Geçerli değil |
Geçerli değil |
datetime2 |
Geçerli değil |
Geçerli değil |
Geçerli değil |
Geçerli değil |
Geçerli değil |
Geçerli değil |
7 |
datetime offset |
Geçerli değil |
Geçerli değil |
Geçerli değil |
Geçerli değil |
Geçerli değil |
Geçerli değil |
7 |
datetime, date, smalldatetime |
Geçerli değil |
Geçerli değil |
Geçerli değil |
Geçerli değil |
Geçerli değil |
Geçerli değil |
Geçerli değil |
money, smallmoney |
Geçerli değil |
Geçerli değil |
Geçerli değil |
Geçerli değil |
Geçerli değil |
Geçerli değil |
Geçerli değil |
time |
Geçerli değil |
Geçerli değil |
Geçerli değil |
Geçerli değil |
Geçerli değil |
Geçerli değil |
7 |
* localeID -1, varsayılan yerel ayar ayar ayarı gösterir.Ingilizce yerel ayar ayar ayarını 1055'tir.
** Uygulanamaz = No bu özniteliklerin çıktı sütun bir seçim işlemi sırasında değerlerdir küme.Bir sütun için sağlanan XML gösteriminde arayan tarafından bu öznitelik için bir değer belirtilirse, bir hata üretir küme ekleme veya güncelleştirme işleminde.
Güvenlik
Bir sütun için güvenlik modeli küme tablo ve sütunlar arasında bulunan güvenlik modeline benzer çalışır.Sütun kümesi bir minitable görünür ve bir seçim işlemi gibi bir SELECT olduğu * bu minitable işlemi.Ancak, sütun arasındaki ilişkiyi küme sparse sütunları gruplandırma kesinlikle bir kapsayıcı yerine ilişkidir.Güvenlik modeli, güvenlik sütununda denetler küme honors DENY operasyonların temel sparse sütunlar ve sütun.Güvenlik modeline ek özellikleri aşağıdaki gibidir:
Güvenlik izinleri verilen ve olması sütundan iptal küme sütunu, tablonun diğer sütununda benzeridir.
Bir sütunu GRANT veya REVOKE, SELECT, INSERT, UPDATE, DELETE ve BAşVURULAR izin küme sütun, biri temel üye sütunlara yaymak küme.Yalnızca sütun kullanım için geçerli küme sütun.Bir sütunu DENY iznine küme tabloyu temel sparse sütunlarından yaymak.
Sütun kümesi sütun INSERT, UPDATE ve DELETE deyimlerini, SELECT yürütme, kullanıcı tabloda karşılık gelen sütun kümesi sütun izinleri ve ayrıca sparse tüm sütunlara ilgili iznine sahip gerektirir.Çünkü sütun küme sparse tüm sütunları gösterir tablosunda seyrek tüm sütunlarda izninizin olması gerekir; bu, değiştirmeden, seyrek sütun içerir.
Varsayılan olarak bir seyrek sütun veya sütun üzerinde bir REVOKE deyim yürütme, üst nesne için güvenlik küme.
Örnekler
Aşağıdaki örneklerde, ortak bir belge tablo içeriyor küme sütun DocID ve Title. Üretim grubu istediği bir ProductionSpecification ve ProductionLocation sütun için tüm üretim belgeleri. Pazarlama Grubu istediği bir MarketingSurveyGroup sütun, pazarlama belgeleri.
C.küme bir sütuna sahip olan bir tablo oluşturma
Aşağıdaki örnek, seyrek sütunları kullanır ve bu sütunu içeren bir tablo oluşturur küme SpecialPurposeColumns. Örneğin, iki satır içine ekler tablo, verileri seçer tablo.
Not
Bu tablo, görüntülemek ve okunmasını kolaylaştırmak için yalnızca beş sütun vardır.
USE AdventureWorks;
GO
CREATE TABLE DocumentStoreWithColumnSet
(DocID int PRIMARY KEY,
Title varchar(200) NOT NULL,
ProductionSpecification varchar(20) SPARSE NULL,
ProductionLocation smallint SPARSE NULL,
MarketingSurveyGroup varchar(20) SPARSE NULL,
MarketingProgramID int SPARSE NULL,
SpecialPurposeColumns XML COLUMN_SET FOR ALL_SPARSE_COLUMNS);
GO
b.Veri ekleme bir tablo sparse sütun adlarını kullanarak
Aşağıdaki örnekler, iki satır içine ekleme tablo diğer bir deyişle, oluşturulmuş Örnek A'yaÖrnekler, seyrek sütun adlarını kullanın ve sütun başvurusu küme.
INSERT DocumentStoreWithColumnSet (DocID, Title, ProductionSpecification, ProductionLocation)
VALUES (1, 'Tire Spec 1', 'AXZZ217', 27)
GO
INSERT DocumentStoreWithColumnSet (DocID, Title, MarketingSurveyGroup)
VALUES (2, 'Survey 2142', 'Men 25 - 35')
GO
c.Veri ekleme bir tablo sütun adı'nı kullanarak küme
Aşağıdaki örnek, üçüncü bir satır içine ekler tablo diğer bir deyişle, oluşturulmuş Örnek A'yaBu kez sparse sütunların adları kullanılır.Bunun yerine, sütunun adını küme kullanılan ve ekleme, iki XML biçiminde sparse dört sütun için değerleri sağlar.
INSERT DocumentStoreWithColumnSet (DocID, Title, SpecialPurposeColumns)
VALUES (3, 'Tire Spec 2', '<ProductionSpecification>AXW9R411</ProductionSpecification><ProductionLocation>38</ProductionLocation>')
GO
d.sütun sonuçlar gözleme küme, SELECT * kullanılır
Aşağıdaki örnek, bir sütunu tablodan tüm sütunları seçer küme.Seyrek sütunların birleşik değerlerini bir XML sütun geri döndürür.Seyrek sütunları tek tek dönmez.
SELECT * FROM DocumentStoreWithColumnSet ;
Here is the result set.
BelgeKimliği başlık SpecialPurposeColumns
1 Lastiği özel 1 <ProductionSpecification>AXZZ217</ ProductionSpecification><ProductionLocation>27</ ProductionLocation>
2 Anket 2142 <MarketingSurveyGroup>Erkekler (25-35</ MarketingSurveyGroup>
3 Lastiği özel 2 <ProductionSpecification>AXW9R411</ ProductionSpecification><ProductionLocation>38</ ProductionLocation>
e.Gözleme sonuçlar adıyla küme sütun seçme
Bu örnek, üretim departmanı pazarlama verilerde ilgileniyor çünkü ekler bir WHERE Çıktı kısıtlamak için yan tümce. Bu örnek, sütunun adını kullanır küme.
SELECT DocID, Title, SpecialPurposeColumns
FROM DocumentStoreWithColumnSet
WHERE ProductionSpecification IS NOT NULL ;
Here is the result set.
BelgeKimliği başlık SpecialPurposeColumns
1 Lastiği özel 1 <ProductionSpecification>AXZZ217</ ProductionSpecification><ProductionLocation>27</ ProductionLocation>
3 Lastiği özel 2 <ProductionSpecification>AXW9R411</ ProductionSpecification><ProductionLocation>38</ ProductionLocation>
f.Seyrek sütun adına göre seçme sonuçlarını gözleme
Bir tabloya bir sütun içerdiğinde küme, aşağıdaki örnekte gösterildiği gibi tek bir sütun adlarını kullanarak tablo yine de sorgulayabilirsiniz.
SELECT DocID, Title, ProductionSpecification, ProductionLocation
FROM DocumentStoreWithColumnSet
WHERE ProductionSpecification IS NOT NULL ;
Here is the result set.
BelgeKimliği başlığı ProductionSpecification ProductionLocation
1 Lastiği özel 1 AXZZ217 27
3 Özel2 AXW9R411 tire 38
g.Bir tablonun bir sütununu kullanarak güncelleştirme küme
Aşağıdaki örnek kayıt üçüncü satır tarafından kullanılan her iki sparse sütunların yeni değerlerini güncelleştirir.
UPDATE DocumentStoreWithColumnSet
SET SpecialPurposeColumns = '<ProductionSpecification>ZZ285W</ProductionSpecification><ProductionLocation>38</ProductionLocation>'
WHERE DocID = 3 ;
GO
Important Note: |
---|
Bir sütunu kullanan bir UPDATE deyim küme tablosundaki tüm sparse sütunları güncelleştirir.Başvurulan değil sparse sütunlar, NULL olarak güncelleştirilir. |
Aşağıdaki örnek, üçüncü kaydı güncelleştirir, ancak yalnızca iki doldurulan sütunlardan biri değerini belirtir.Ikinci sütun ProductionLocation bulunmamaktadır UPDATE deyim NULL olarak güncelleştirilir.
UPDATE DocumentStoreWithColumnSet
SET SpecialPurposeColumns = '<ProductionSpecification>ZZ285W</ProductionSpecification>'
WHERE DocID = 3 ;
GO