Sütun kümelerini kullanma

Seyrek sütunları kullanan tablolara tabloda tüm seyrek sütunları dönmek için belirlenen bir sütuna atayabilir. Sütun kümesi tüm seyrek sütunları bir tablo yapısal bir çıkış birleştiren bir yazılmamış xml temsilidir. Sütun kümesi sütun kümesi fiziksel olarak tabloda depolanan değil bir hesaplanan sütun gibi bir. Sütun kümesi sütun kümesi doğrudan güncelleştirilebilir bir hesaplanan sütun farklıdır.

Tablodaki sütun sayısı büyük ve hantal, onlara ayrı ayrı faaliyet sütun kümelerini kullanma düşünmelisiniz. Onlar seçip veri tabloları üzerinde çok sayıda sütun sütun kümelerini kullanarak ekleme uygulamaları bazı performans geliştirme görebilirsiniz. Ancak, fazla dizin, tablodaki sütunları tanımlandığında sütun kümelerini performansını azaltılabilir. Bunun nedeni, yürütme planı için gerekli olan bellek miktarını artırır.

Sütun kümesi tanımlamak için <column_set_name>for all_sparse_columns anahtar kelimeler create table veya alter table deyimleri.

Sütun kümelerini 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ümesi aynı deyimi bir parçası olarak eklenir.

  • Sütun kümesi değiştirilemez. Bir sütunu değiştirmek için sütun kümesi silip gerekir.

  • Bu tablo zaten seyrek sütunlar içeriyorsa, sütun kümesi tablo eklenemez.

  • Seyrek sütun içeren bir tablo sütun kümesi eklenebilir. Seyrek sütunlar sonraki tabloya eklediyseniz, bunlar sütun kümesi içinde görünür.

  • Her tablo yalnızca bir sütun kümesi izin verilir.

  • Sütun kümesi isteğe bağlıdır ve seyrek sütunları kullanmak için gerekli değildir.

  • Kısıtlamaları veya varsayılan değerleri bir sütun kümesi tanımlanamaz.

  • Hesaplanan sütunlar, sütun kümesi sütun içeremez.

  • Dağıtılmış sorgular sütun kümelerini içeren tablolar desteklenmez.

  • Çoğaltma sütun kümelerini desteklemez.

  • Değişiklik veri yakalama sütun kümelerini desteklemez.

  • Sütun kümesi herhangi bir dizinin bir parçası olamaz. Bu, xml dizin, tam metin dizinleri ve dizin oluşturulmuş görünümler içerir. Herhangi bir dizinde bulunan bir sütunu olarak sütun kümesi eklenemez.

  • Sütun kümesi filtre uygulanmış dizin veya filtre uygulanmış istatistikleri filtre ifadesi içinde kullanılamaz.

  • Bir görünümü sütun kümesi içeriyorsa, sütun kümesi xml sütun görünümünde görüntülenir.

  • Bir dizin oluşturulmuş görünüm tanımında bir sütun kümesi eklenemez.

  • Bölümlenmiş görünümün seyrek sütunları adını belirttiğinde sütun kümelerini içeren tablolar dahil bölümlenmiş görünümler güncelleştirilebilir. Sütun kümesi başvurduğunda Bölümlenmiş görünümün güncelleştirilebilir değil.

  • Sütun kümelerini başvurun sorgu bildirimleri izin verilmez.

  • xml verisi 2 GB boyutunda olabilir. Birleştirilmiş verileri satır tüm nonnull seyrek sütunlar bu sınırı aşarsa, sorgu veya dml işlemi bir hata üretecektir.

  • columns_updated işlevi tarafından döndürülen veriler hakkında daha fazla bilgi için bkz: Seyrek sütunlar kullanma.

Veri sütun kümesi seçme kuralları

Veri sütun kümesi seçmek için aşağıdaki yönergeleri dikkate alın:

  • Kavramsal olarak bir sütun kümesi temel ilişkisel sütunları kümesi tek bir xml temsil agrega xml sütun güncelleştirilebilir, hesaplanan türüdür. Sütun yalnızca destekler all_sparse_columns özelliğini ayarlayın. Bu özellik, tüm seyrek sütun belirli bir satır için tüm nonnull değerleri toplamak için kullanılır.

  • De SQL Server Management Studiomasa editörü, sütun kümesi görüntülenip düzenlenebilir xml alanı. Sütun kümelerini biçimde tanımlayın:

    <column_name_1>value1</column_name_1><column_name_2>value2</column_name_2>...
    

    Sütun kümesi değerlere örnekler aşağıdaki gibidir:

    • <sparseProp1>10</sparseProp1><sparseProp3>20</sparseProp3>

    • <DocTitle>Bicycle Parts List</DocTitle><Region>West</Region>

  • Boş değerler içeren seyrek sütunlar, sütun kümesi xml gösterimini gelen atlanır.

Dikkat notuDikkat

Sütun ekleme, değişiklikleri seçin davranışını ayarlayın * sorgular. Sorgu, bir xml sütunu olarak sütun kümesini döndürebilir ve seyrek sütunları tek tek döndürmez. Şema tasarımcıları ve yazılım geliştiricilerine varolan uygulamaların çalışmamasına neden değil dikkatli olmak gerekir.

Ekleme veya bir sütun kümesi verileri değiştirme

Seyrek sütun veri manipülasyonu tek tek sütun adı kullanılarak gerçekleştirilen veya sütunun adını referans olarak ayarlayın ve sütun değerleri belirtme sütun kümesi xml biçimini kullanarak ayarlayın. Seyrek sütun xml sütun herhangi bir sırada görünebilir.

Seyrek sütun değerleri eklenen ya da xml sütun kümesi kullanarak temel seyrek sütunlar eklenen değerleri gelen örtülü olarak dönüştürülür xmlveri türü. Sayısal sütunlar halinde XML sayısal sütun için boş bir değer boş bir dizeye dönüştürür. Bu, aşağıdaki örnekte gösterildiği gibi sayısal sütuna eklenecek sıfır neden 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, ama değeri 0takıldı.

Sql_variant veri türü kullanarak

sql_variantTarih türü birden çok farklı veri türleri,-ebilmek stok gibi int, char, ve date. Sütun kümelerini çıkış veri türü ile ilişkili ölçek, hassas ve yerel ayar bilgileri gibi bilgiler bir sql_variantdeğeri olarak oluşturulan xml sütun öznitelikleri. Niteliklerin özel oluşturulan xml deyimi bir girdi olarak sağlamak için bir ekleme veya güncelleştirme çalışırsanız, işlem sütun ayarla, bu özniteliklerin bazıları gerekli ve bazıları varsayılan değeri atanır. Aşağıdaki tabloda, veri türleri ve varsayılan değerleri değer değil sağlandığında, sunucunun oluşturduğu listeler.

Veri türü

LocaleID *

sqlCompareOptions

sqlCollationVersion

SqlSortId

Maksimum uzunluk

Hassas

Ölçek

char, varchar, binary

-1

'Varsayılan'

0

0

8000

Uygulanamaz **

Geçerli değildir

nvarchar

-1

'Varsayılan'

0

0

4000

Geçerli değildir

Geçerli değildir

decimal, float, real

Geçerli değildir

Geçerli değildir

Geçerli değildir

Geçerli değildir

Geçerli değildir

18

0

integer, bigint, tinyint, smallint

Geçerli değildir

Geçerli değildir

Geçerli değildir

Geçerli değildir

Geçerli değildir

Geçerli değildir

Geçerli değildir

datetime2

Geçerli değildir

Geçerli değildir

Geçerli değildir

Geçerli değildir

Geçerli değildir

Geçerli değildir

7

datetime offset

Geçerli değildir

Geçerli değildir

Geçerli değildir

Geçerli değildir

Geçerli değildir

Geçerli değildir

7

datetime, date, smalldatetime

Geçerli değildir

Geçerli değildir

Geçerli değildir

Geçerli değildir

Geçerli değildir

Geçerli değildir

Geçerli değildir

money, smallmoney

Geçerli değildir

Geçerli değildir

Geçerli değildir

Geçerli değildir

Geçerli değildir

Geçerli değildir

Geçerli değildir

time

Geçerli değildir

Geçerli değildir

Geçerli değildir

Geçerli değildir

Geçerli değildir

Geçerli değildir

7

* LocaleID -1 öntanımlı yerel anlamına gelir. İngilizce Yerel 1033'tür.

** Uygulanamaz = No değerleri çıktı öznitelikler için sütun kümesi bir seçme işlemi sırasında. Tarafından sağlanan bir INSERT veya update işlemi ayarlamak sütun xml gösteriminde arayan bu öznitelik için bir değer belirtilirse, bir hata üretir.

Güvenlik

Güvenlik modeli sütun tablo ve sütunlar arasında bulunan güvenlik modeline benzer işleri ayarlayın. Sütun kümelerini bir minitable görüntülenir ve seçme gibi bir select işlemi ise * bu minitable işlemi. Ancak, sütun seyrek sütun ayarla kesinlikle bir kapsayıcı yerine bir gruplama ilişki ilişkidir. Güvenlik modeli sütun kümesi sütun güvenliğini denetler ve alttaki seyrek sütunları verme işlemlerini onur. Ek özellikleri güvenlik modeli aşağıdaki gibidir:

  • Güvenlik izinleri verilmiş ve sütun kümesi sütun, tablonun diğer sütununda benzer iptal edildi.

  • Bir grant veya revoke, select, INSERT, update, delete ve başvurular izni bir sütun kümesi sütun kümesi temel üye sütunlarının doldurmuyor. Bu yalnızca sütun kümesi sütun kullanımı için geçerlidir. Sütun kümesi izni verme yaymak için alttaki seyrek sütunları tablo.

  • Yürütülen select, INSERT, update ve delete deyimlerini sütun kümesi sütun üzerinde kullanıcı tablo sütun kümesi sütun karşılık gelen izinleri ve ayrıca tüm seyrek sütun karşılık gelen izni vardır gerektirir. Tablodaki seyrek sütun sütun kümesi temsil ettiğinden, tüm seyrek sütunlar üzerinde izniniz olmalıdır ve bu değil değişen seyrek sütunlar içerir.

  • Seyrek sütun veya sütun kümesi üzerinde bir revoke deyimi yürütme güvenlik kendi üst nesne için varsayılan olarak ayarlanır.

Örnekler

Aşağıdaki örneklerde, bir belge tablo sütun kümesini içeren DocIDve Title. Üretim grubu istediği bir ProductionSpecificationve ProductionLocationsütun için tüm üretim belgeleri. Pazarlama grubu istediği bir MarketingSurveyGroupsütun belgeleri pazarlama.

A.Belirlenen bir sütuna sahip tablo oluşturma

Aşağıdaki örnek, seyrek sütunları kullanır ve sütun kümesi içeren bir tablo oluşturur SpecialPurposeColumns. Örnek, iki satır tabloya ekler ve sonra veri tablosundan seçer.

[!NOT]

Bu tablo, görüntüleme ve okuma kolaylaştırmak için yalnızca beş sütun vardır.

USE AdventureWorks2012;
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.Seyrek sütun adlarını kullanarak bir tabloya veri ekleme

Aşağıdaki örnekler, a oluşturulan tablo iki satır eklemek Örnekler ve sütun kümesi başvuru değil seyrek sütun adlarını kullanın.

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.Sütun adı kullanarak bir tabloya veri ekleme ayarla

Aşağıdaki örnek, a oluşturulan tabloya üçüncü bir satır ekler. Bu kez, seyrek sütun adlarını kullanılmaz. Bunun yerine, sütun kümesi adı kullanılır ve iki xml biçiminde dört seyrek sütun değerleri eklemek sağlar.

INSERT DocumentStoreWithColumnSet (DocID, Title, SpecialPurposeColumns)
VALUES (3, 'Tire Spec 2', '<ProductionSpecification>AXW9R411</ProductionSpecification><ProductionLocation>38</ProductionLocation>');
GO

D.Bir sütun seçin ayarlamak sonuçlarını gözleme * kullanılır

Aşağıdaki örnek sütun kümesi içeren tablodan tüm sütunları seçer. xml sütun seyrek sütun birleştirilmiş değerleri döndürür. Seyrek sütunları tek tek dönmez.

SELECT DocID, Title, SpecialPurposeColumns FROM DocumentStoreWithColumnSet ;

Sonuç kümesi buradadır.

DocID Title        SpecialPurposeColumns

1      Tire Spec 1  <ProductionSpecification>AXZZ217</ProductionSpecification><ProductionLocation>27</ProductionLocation>

2      Survey 2142  <MarketingSurveyGroup>Men 25 - 35</MarketingSurveyGroup>

3      Tire Spec 2  <ProductionSpecification>AXW9R411</ProductionSpecification><ProductionLocation>38</ProductionLocation>

E.Ada göre ayarlamak sütun seçme sonuçlarını gözleme

Bu örnek, üretim bölümü pazarlama verileri ilgi değildir çünkü ekler bir WHEREÇıkış kısıtlamak için yan. Örneğin, sütun kümesi adını kullanır.

SELECT DocID, Title, SpecialPurposeColumns
FROM DocumentStoreWithColumnSet
WHERE ProductionSpecification IS NOT NULL ;

Sonuç kümesi buradadır.

DocID Title        SpecialPurposeColumns

1     Tire Spec 1  <ProductionSpecification>AXZZ217</ProductionSpecification><ProductionLocation>27</ProductionLocation>

3     Tire Spec 2  <ProductionSpecification>AXW9R411</ProductionSpecification><ProductionLocation>38</ProductionLocation>

F.Ada göre seyrek sütunları seçme sonuçlarını gözleme

Tablo sütun kümesi içeriyorsa, aşağıdaki örnekte gösterildiği gibi tek tek sütun adları kullanarak tablo sorgulayabilirsiniz.

SELECT DocID, Title, ProductionSpecification, ProductionLocation 
FROM DocumentStoreWithColumnSet
WHERE ProductionSpecification IS NOT NULL ;

Sonuç kümesi buradadır.

DocID Title        ProductionSpecification ProductionLocation

1     Tire Spec 1  AXZZ217                 27

3     Tire Spec 2  AXW9R411                38

G.Tablo sütun kümesi kullanarak güncelleştirme

Aşağıdaki örnek, satır tarafından kullanılan iki seyrek sütunlar için yeni değerleri ile üçüncü kaydı güncelleştirir.

UPDATE DocumentStoreWithColumnSet
SET SpecialPurposeColumns = '<ProductionSpecification>ZZ285W</ProductionSpecification><ProductionLocation>38</ProductionLocation>'
WHERE DocID = 3 ;
GO
Önemli notÖnemli

Bir update deyimi kümesi kullanan tüm seyrek sütunları tablo güncelleştirir. Değil başvurulan seyrek sütunlar null olarak güncelleştirilir.

Aşağıdaki örnek üçüncü kaydı güncelleştirir, ancak yalnızca iki kalabalık sütunlardan birinin değerini belirtir. İkinci sütun ProductionLocationdahil değil UPDATEdeyimi ve null.

UPDATE DocumentStoreWithColumnSet
SET SpecialPurposeColumns = '<ProductionSpecification>ZZ285W</ProductionSpecification>'
WHERE DocID = 3 ;
GO

Ayrıca bkz.

Kavramlar

Seyrek sütunlar kullanma