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 noteImportant 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

See Also

Concepts