Sütun kümelerini kullanma

tabloTüm seyrek sütun dönmek için küme bir sütun seyrek sütunları kullanın s belirleyebilirler tablo.Sütun küme, seyrek sütunları bir araya getiren bir untyped xml temsilidir bir tablo içine yapılandırılmış çıktı.Sütun küme içinde fiziksel olarak depolanmaz, sütun gibi hesaplanmış bir sütun kümedir tablo.Sütun küme sütun küme doğrudan güncelleştirilebilir bir hesaplanmış sütun farklıdır.

Sütun kümeleri kullanma ne zaman düşünmelisiniz sütun sayısı bir tablo büyük olduğunu ve bunları ayrı ayrı çalışan hantal.Seçin ve çok sayıda sütun içeren tablolarda sütun kümelerini kullanarak veri eklemek, bazı performans geliştirme uygulamaları görebilirsiniz.Sütun kümelerini performansını, fazla dizin sütunlarında tanımlandığında ancak azaltılabilir tablo.Bunun nedeni yürütme planı için gerekli olan bellek miktarını artırır.

Bir sütun tanımlamak için küme, kullanma <column_küme_adı> for all_sparse_columns anahtar kelimelericreate 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üme aynı deyim bir parçası olarak eklenir.

  • Sütun küme değiştirilemez.Bir sütunu değiştirmek için küme, silmek ve sütun küme yeniden oluşturmanız gerekir.

  • Sütun küme eklenemiyor bir tablo o, tablo zaten seyrek sütunlar içerir.

  • Sütun küme eklenebilir bir tablo seyrek sütunlar içermez.Seyrek sütunları daha sonra eklenen tablo, sütun kümende görüntülenir.

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

  • Sütun küme isteğe bağlıdır ve seyrek sütunları kullanmak için gereklidir.

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

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

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

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

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

  • Sütun küme dizini herhangi 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üme eklenemez.

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

  • Bir görünüme bir sütun küme içerdiğinde, sütun küme gibi bir xml sütun görünümünde görüntülenir.

  • Bir dizinli görünüm tanımında bir sütun küme eklenemez.

  • Seyrek sütun bölümlenmiş görünümün adını belirtir, sütun kümelerini içeren tablolar dahil bölümlenmiş görünümler güncelleştirilebilir.Sütun küme başvurduğunda bölümlenmiş görünümün güncelleştirilebilir değil.

  • Sütun kümeleri için başvuran bir sorgu bildirimleri izin verilmez.

  • xml verilerini bir 2 gb boyutunda olabilir.Birleştirilmiş verileri tüm geçirecektir seyrek sütun satır bu sınırı aşarsa, 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ütundaki verileri seçme kuralları ayarlama

Bir sütundaki verileri seçmek için aşağıdaki yönergeleri dikkate alın küme:

  • Kavramsal olarak bir sütun küme temel ilişkisel sütunları küme tek bir xml gösterimine toplayan xml sütun güncelleştirilebilir, hesaplanan türüdür.Sütun yalnızca destekler all_sparse_columns küme özellik.Bu özellik için kullanılan toplu belirli bir satır için tüm seyrek sütunları null olmayan tüm değerleri.

  • De SQL Server Management Studio tablo Düzenleyen, kümeleri bir EDI görüntülenen sütuntablo 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üme değerlerini örnekler aşağıdaki gibidir:

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

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

  • Null değerler içeren seyrek sütunlar, sütun küme xml gösterimi gelen atlanır.

Dikkat notuDikkat

select davranışını küme değişiklikleri bir sütun ekleyerek * sorgular.Sorgu sütun verir 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ştiricilerine, mevcut uygulamaların çalışmamasına dikkatli olmalısınız.

Sütun kümesi verileri değiştirme veya ekleme

Seyrek sütun veri işleme tek tek sütunların adı kullanılarak gerçekleştirilen veya sütunun adını başvurarak ayarlayın ve sütun küme xml biçimini kullanarak ayarlamak sütun değerlerini belirtme.Seyrek sütun xml sütun herhangi bir sırada görünebilir.

Seyrek sütun değerleri eklendiğinde veya güncelleştirildiğinde xml sütun küme kullanarak, alttaki seyrek sütunlar eklenen değerleri gelen örtülü olarak dönüştürülür xml veri türü.Sayısal sütun durumunda boş bir xml sayısal sütun için değeri dönüştürür için boş bir dize.Bu sayısal eklenecek sıfır olur sütun aşağıdaki örnekte gösterildiği gibi.

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

Bu örnekte, sütun için hiçbir değer belirtilmedi i, ancak değeri 0 eklenmiştir.

Sql_variant veri türü kullanarak

The sql_variant date type can store multiple different data types, such as int, char, and date.Sütunun veri türü ile ilişkilendirilmiş ölçek, hassasiyet ve yerel ayar bilgileri gibi bilgiler çıktı ayarlar bir sql_variant değeri olarak öznitelikleri oluşturulan xml sütun.Bu özel üretilen xml öznitelikleri sağlamak deneyin deyim bir sütun kümesi üzerinde INSERT veya update işlemi için bir giriş olarak bu özniteliklerin bazıları gereklidir ve bazıları varsayılan değeri atanır.Aşağıdaki tablo veri türleri ve değeri sağlanmadığında üretir sunucu varsayılan değerlerini listeler.

Veri türü

LocaleID *

sqlCompareOptions

sqlCollationVersion

SqlSortId

En fazla uzunluk

Precision

Ölçek

char, varchar, binary

-1

'Varsayılan'

0

0

8000

Uygulanabilir değil **

Uygulanabilir değil

nvarchar

-1

'Varsayılan'

0

0

4000

Uygulanabilir değil

Uygulanabilir değil

decimal, float, real

Uygulanabilir değil

Uygulanabilir değil

Uygulanabilir değil

Uygulanabilir değil

Uygulanabilir değil

18

0

integer, bigint, tinyint, smallint

Uygulanabilir değil

Uygulanabilir değil

Uygulanabilir değil

Uygulanabilir değil

Uygulanabilir değil

Uygulanabilir değil

Uygulanabilir değil

datetime2

Uygulanabilir değil

Uygulanabilir değil

Uygulanabilir değil

Uygulanabilir değil

Uygulanabilir değil

Uygulanabilir değil

7

datetime offset

Uygulanabilir değil

Uygulanabilir değil

Uygulanabilir değil

Uygulanabilir değil

Uygulanabilir değil

Uygulanabilir değil

7

datetime, date, smalldatetime

Uygulanabilir değil

Uygulanabilir değil

Uygulanabilir değil

Uygulanabilir değil

Uygulanabilir değil

Uygulanabilir değil

Uygulanabilir değil

money, smallmoney

Uygulanabilir değil

Uygulanabilir değil

Uygulanabilir değil

Uygulanabilir değil

Uygulanabilir değil

Uygulanabilir değil

Uygulanabilir değil

time

Uygulanabilir değil

Uygulanabilir değil

Uygulanabilir değil

Uygulanabilir değil

Uygulanabilir değil

Uygulanabilir değil

7

* LocaleID -1, varsayılan yerel ayar ayar anlamına gelir.İngilizce yerel ayar ayar 1055'tir.

** Uygulanamaz = Hayır değerler çıktı bu öznitelikler için bir sütun küme üzerinde select işlemi sırasında.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 , bir INSERT veya update işlemi.

Güvenlik

Bir sütun için güvenlik modeli küme tablo ve sütunlar arasında var olan güvenlik modeline benzer çalışır.Sütun kümelerini görünür bir minitable ve bir select işlemi gibi bir seçmedir * bu minitable işlemi.Ancak, sütun arasındaki ilişkiyi küme seyrek sütunlar için gruplandırma kesinlikle kapsayıcı yerine ilişkidir.Güvenlik modeli sütun küme sütun güvenliğini denetler ve alttaki seyrek sütunları verme işlemlerini kabul eder.Güvenlik modeli ek özellikleri aşağıdaki gibidir:

  • Güvenlik izinleri verilen ve benzer diğer sütun, sütun küme sütun gelen iptal edilmiş tablo.

  • Bu küme temel üye sütunları sütun küme sütun üzerinde bir grant veya iptal seçin, INSERT, update, delete ve başvurular izni yaymaz.Bu yalnızca sütun küme sütun kullanım için geçerlidir.Alttaki seyrek sütunları tablo sütun küme üzerinde izni verme yaymak.

  • INSERT, update ve delete deyimlerini sütun küme sütun üzerinde kullanıcı karşılık gelen sütun küme sütun izinleri ve de seyrek yer alan tüm sütun karşılık gelen izni olmasını gerektirir seçin yürütme, tablo.Seyrek sütunlar, sütun küme temsil ettiğinden tablo, seyrek sütunlar üzerinde izniniz olması gerekir ve bu değil değiştirmek seyrek sütunlar içerir.

  • revoke deyim seyrek sütun veya sütun küme üzerinde yürütmek için kendi üst nesnenin güvenlik varsayılan olur.

Örnekler

Aşağıdaki örneklerde, bir belge tablo ortak sütunları küme içeren 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 için pazarlama belgeleri.

A.Bir sütunu olan bir tablo oluşturmaküme

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

Not

Bu tablo görüntülemek ve okunmasını kolaylaştırmak için yalnızca beş sütun vardır.

USE AdventureWorks2008R2;
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 seyrek sütun adlarını kullanarak

Aşağıdaki örnekler iki satırlar eklemek tablo yani içinde oluşturulan örnek a.Örnekler ve sütun küme başvurusu 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.Veri ekleme bir tablo sütunun adını kullanarak ayarlama

Aşağıdaki örnek bir üçüncü satıra ekler tablo yani içinde oluşturulan örnek a.Bu saat seyrek sütun adlarını kullanılmaz.Bunun yerine, sütun küme adı kullanılır ve INSERT iki xml biçiminde dört seyrek sütunlar için değerleri sağlar.

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

D.Bir sütunun sonuçları gözleme küme SEÇTİĞİNİZDE * kullanılır

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

SELECT * 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.Sütun seçme sonuçlarını gözleme küme ada göre

Üretim departmanı pazarlama verileri ilgileniyor çünkü bu örnek ekler bir WHERE yan tümce tümce sınırlama çıktı.Sütunun adını bu örnek kullanır küme.

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.Gözleme sonuçlar adıyla seyrek sütunları seçme

Tablo sütun küme 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üme kullanarak güncelleştirme

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

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

Seyrek sütunlar, sütun küme kullanan bir update deyim güncelleştirmeleri tablo.Referansta bulunulur seyrek sütunlar null olarak güncelleştirilir.

Aşağıdaki örnekte, üçüncü kaydı güncelleştirir, ancak yalnızca iki doldurulmuş sütunlardan birinin değerini belirtir.İkinci sütun ProductionLocation , dahil edilmeyen UPDATE deyim ve null.

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

Ayrıca bkz.

Kavramlar