Ekinlikler
31 Mar 23 - 2 Nis 23
En büyük SQL, Fabric ve Power BI öğrenme etkinliği. 31 Mart – 2 Nisan. 400 ABD doları tasarruf etmek için FABINSIDER kodunu kullanın.
Bugün kaydolunBu tarayıcı artık desteklenmiyor.
En son özelliklerden, güvenlik güncelleştirmelerinden ve teknik destekten faydalanmak için Microsoft Edge’e yükseltin.
Şunlar için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümleri
Microsoft Fabric'te Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
SQL veritabanı
Seyrek sütunlar kullanan tablolar, tablodaki tüm seyrek sütunları döndürmek için bir sütun kümesi belirleyebilir. Sütun kümesi, tablonun tüm seyrek sütunlarını yapılandırılmış bir çıktıda birleştiren, yazılmamış bir XML gösterimidir. Sütun kümesi, tabloda fiziksel olarak depolanmadığı için hesaplanmış bir sütuna benzer. Sütun kümesi, sütun kümesinin doğrudan güncelleştirilebilir olması bakımından hesaplanmış sütundan farklıdır.
Bir tablodaki sütun sayısı büyük olduğunda ve bunlar üzerinde ayrı ayrı çalıştırmak zahmetli olduğunda sütun kümelerini kullanmayı düşünmelisiniz. Uygulamalar, çok sayıda sütunu olan tablolarda sütun kümelerini kullanarak veri seçip eklediklerinde bazı performans iyileştirmeleri görebilir. Ancak tablodaki sütunlarda çok sayıda dizin tanımlandığında sütun kümelerinin performansı azaltılabilir. Bunun nedeni, yürütme planı için gereken bellek miktarının artmasıdır.
Sütun kümesi tanımlamak için CREATE TABLE veya ALTER TABLE ifadelerinde *<column_set_name>* FOR ALL_SPARSE_COLUMNS
anahtar sözcüklerini kullanın.
Sütun kümelerini kullanırken aşağıdaki yönergeleri göz önünde bulundurun:
Seyrek sütunlar ve sütun kümesi aynı deyimin parçası olarak eklenebilir.
Tablo zaten seyrek sütunlar içeriyorsa tabloya sütun kümesi eklenemez.
Sütun kümesi içindeki sütun değiştirilemez veya yeniden adlandırılamaz. Sütun kümesini değiştirmek için seyrek sütunları ve sütun kümesini silip yeniden oluşturmanız gerekir. SPARSE anahtar sözcüğüne sahip sütunlar tablodan eklenebilir ve bırakılabilir.
Seyrek sütun içermeyen bir tabloya sütun kümesi eklenebilir. Daha sonra tabloya seyrek sütunlar eklenirse, bunlar sütun kümesinde görünür.
Tablo başına yalnızca bir sütun kümesine izin verilir.
Seyrek sütunları kullanmak için sütun kümesi isteğe bağlıdır ve gerekli değildir.
Kısıtlamalar veya varsayılan değerler bir sütun kümesinde tanımlanamaz.
Hesaplanan sütunlar sütun kümesi sütunları içeremez.
Dağıtılmış sorgular, sütun kümeleri içeren tablolarda desteklenmez.
Çoğaltma sütun kümelerini desteklemez.
Değişiklik veri yakalaması sütun kümelerini desteklemez.
Sütun kümesi herhangi bir dizin türünün parçası olamaz. Buna XML dizinleri, tam metin dizinleri ve dizinlenmiş görünümler dahildir. Sütun kümesi herhangi bir dizine eklenen sütun olarak eklenemez.
Sütun kümesi, filtrelenmiş dizinin veya filtrelenmiş istatistiklerin filtre ifadesinde kullanılamaz.
Görünümde sütun kümesi bulunduğunda, sütun kümesi görünümde XML sütunu olarak görünür.
Sütun kümesi dizinli görünüm tanımına eklenemez.
Bölümlenmiş görünüm, seyrek sütunları ada göre belirttiğinde sütun kümeleri içeren tabloları kapsayan bölümlenmiş görünümler güncellenebilir. Bölümlenmiş görünüm, sütun kümesine başvurduğunda güncelleştirilebilir değildir.
Sütun kümelerine başvuran sorgu bildirimlerine izin verilmez.
XML verilerinin boyut sınırı 2 GB'tır. Bir satırdaki TÜM NULL olmayan seyrek sütunların birleşik verileri bu sınırı aşarsa, sorgu veya DML işlemi bir hata oluşturur.
COLUMNS_UPDATED
işlevi tarafından döndürülen veriler hakkında bilgi için bkz. Seyrek Sütunları Kullanma.
Bir sütun kümesinden veri seçmek için aşağıdaki yönergeleri göz önünde bulundurun:
Kavramsal olarak sütun kümesi, temel alınan ilişkisel sütun kümesini tek bir XML gösteriminde toplayan güncelleştirilebilir, hesaplanan bir XML sütunu türüdür. Sütun kümesi yalnızca ALL_SPARSE_COLUMNS özelliğini destekler. Bu özellik, belirli bir satır için tüm seyrek sütunlardan NULL olmayan tüm değerleri toplamak için kullanılır.
SQL Server Management Studio tablo düzenleyicisinde, sütun kümeleri düzenlenebilir bir XML alanı olarak görüntülenir. Sütun kümelerini şu biçimde tanımlayın:
<column_name_1>value1</column_name_1><column_name_2>value2</column_name_2>...
Sütun kümesi değerlerine örnek olarak şunlar verilebilir:
<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ümesinin XML gösteriminden atlanır.
Uyarı
Sütun kümesi eklemek, SELECT *
sorgularının davranışını değiştirir. Sorgu, sütun kümesini XML sütunu olarak döndürür ve ayrı ayrı seyrek sütunları döndürmez. Şema tasarımcıları ve yazılım geliştiricileri, mevcut uygulamaları bozmamaya dikkat etmelidir. Bireysel seyrek sütunlar, SELECT deyiminde isimle sorgulanabilir.
Seyrek bir sütunun veri işlemesi, tek tek sütunların adı kullanılarak veya sütun kümesinin adına başvurarak ve sütun kümesinin XML biçimi kullanılarak ayarlanan sütun değerlerini belirterek gerçekleştirilebilir. Seyrek sütunlar XML sütununda herhangi bir sırada görünebilir.
Seyrek sütun değerleri XML sütun kümesi kullanılarak eklendiğinde veya güncelleştirildiğinde, temel alınan seyrek sütunlara eklenen değerler örtük olarak xml veri türünden dönüştürülür. bigint, int, smallint, tinyint, bit, floatve gerçekgibi sayısal veri türlerinin çoğu söz konusu olduğunda, sütun için XML'deki boş bir değer boş dizeye dönüştürülür. Bu, aşağıdaki örnekte gösterildiği gibi sütuna sıfır eklenmesine neden olur. Ancak, 0'a değiştirme, sayısal ve ondalık veri türleri için geçerli değildir; bu değerler belirtilmelidir veya dönüştürme hatasına 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
Bu örnekte, i
sütunu için değer belirtilmedi, ancak 0
değeri eklendi.
sql_variant tarih türü, int, charve tarihgibi birden çok farklı veri türünü depolayabilir. Sütun kümeleri, oluşturulan XML sütununda öznitelik olarak bir sql_variant değeriyle ilişkili ölçek, duyarlık ve yerel ayar bilgileri gibi veri türü bilgilerini verir. Bu öznitelikleri özel oluşturulan bir XML deyiminde sütun kümesindeki ekleme veya güncelleştirme işlemi için giriş olarak sağlamaya çalışırsanız, bu özniteliklerden bazıları gerekir ve bazıları varsayılan değere atanır. Aşağıdaki tabloda, değer sağlanmadığında sunucunun oluşturduğu veri türleri ve varsayılan değerler listelenmiştir.
Veri tipi | localeID* | sqlCompareOptions | sqlCollationVersion | SqlSortId | Maksimum uzunluk | Kesinlik | Ölçek |
---|---|---|---|---|---|---|---|
char, varchar, binary | -1 | 'Varsayılan' | 0 | 0 | 8000 | Uygulanamaz** | Uygulanamaz |
nvarchar | -1 | 'Varsayılan' | 0 | 0 | 4000 | Uygulanamaz | Uygulanamaz |
ondalık, kayangerçek | Uygulanamaz | Uygulanamaz | Uygulanamaz | Uygulanamaz | Uygulanamaz | 18 | 0 |
tamsayı, büyük tamsayı, küçüktamsayı, küçük tamsayı | Uygulanamaz | Uygulanamaz | Uygulanamaz | Uygulanamaz | Uygulanamaz | Uygulanamaz | Uygulanamaz |
datetime2 | Uygulanamaz | Uygulanamaz | Uygulanamaz | Uygulanamaz | Uygulanamaz | Uygulanamaz | 7 |
tarih saat farkı | Uygulanamaz | Uygulanamaz | Uygulanamaz | Uygulanamaz | Uygulanamaz | Uygulanamaz | 7 |
datetime, date, smalldatetime | Uygulanamaz | Uygulanamaz | Uygulanamaz | Uygulanamaz | Uygulanamaz | Uygulanamaz | Uygulanamaz |
para, küçük para | Uygulanamaz | Uygulanamaz | Uygulanamaz | Uygulanamaz | Uygulanamaz | Uygulanamaz | Uygulanamaz |
saat | Uygulanamaz | Uygulanamaz | Uygulanamaz | Uygulanamaz | Uygulanamaz | Uygulanamaz | 7 |
* localeID -1 varsayılan yerel ayar anlamına gelir. İngiliz yerel ayarı 1033'dür.
** Uygulanamaz = Sütun kümesindeki bir seçme işlemi sırasında bu öznitelikler için hiçbir değer çıkışı yapılmaz. Ekleme veya güncelleştirme işlemindeki bir sütun kümesi için sağlanan XML gösteriminde çağıran tarafından bu öznitelik için bir değer belirtildiğinde hata oluşturur.
Sütun kümesinin güvenlik modeli, tablo ve sütunlar arasında var olan güvenlik modeline benzer şekilde çalışır. Sütun kümeleri mini tablo olarak görselleştirilebilir ve seçme işlemi bu mini tablodaki SELECT *
işlemi gibidir. Ancak, sütunların seyrek sütunlar olarak ayarlandığı durumlardaki ilişki, kapsayıcı bir ilişkiden ziyade bir gruplandırma ilişkisidir. Güvenlik modeli, sütun kümesi sütunundaki güvenliği denetler ve alttaki seyrek sütunlardaki DENY işlemlerini dikkate alır. Güvenlik modelinin ek özellikleri şunlardır:
Güvenlik izinleri, tablodaki diğer sütunlara benzer şekilde sütun kümesi sütunundan verilebilir ve iptal edilebilir.
Sütun kümesi sütunundaKI SELECT, INSERT, UPDATE, DELETE ve REFERENCES izinlerinin VERME veya İPTAL ETME işlemi, bu kümenin temel üye sütunlarına yayılmaz. Yalnızca sütun setinin kullanımı için geçerlidir. Sütun kümesindeki REDDET izni, tablonun temel alınan seyrek sütunlarına yayılır.
Sütun kümesi sütununda SELECT, INSERT, UPDATE ve DELETE deyimlerini yürütmek için, kullanıcının sütun kümesi sütununda ilgili izinlere ve ayrıca tablodaki tüm seyrek sütunlarda buna karşılık gelen izinlere sahip olması gerekir. Sütun kümesi tablodaki tüm seyrek sütunları temsil ettiğinden, tüm seyrek sütunlar üzerinde izniniz olmalıdır ve bu, değiştirmiyor olabileceğiniz seyrek sütunları içerir.
Seyrek bir sütun veya sütun kümesinde REVOKE deyiminin yürütülmesi, güvenliği varsayılan olarak üst nesnesinin güvenlik ayarlarına ayarlar.
Aşağıdaki örneklerde, belge tablosu DocID
ve Title
ortak sütun kümesini içerir. Üretim grubu, tüm üretim belgeleri için bir ProductionSpecification
ve ProductionLocation
sütunu ister. Pazarlama grubu, pazarlama belgeleri için bir MarketingSurveyGroup
sütunu istiyor.
Aşağıdaki örnek seyrek sütunlar kullanan tabloyu oluşturur ve SpecialPurposeColumns
sütun kümesini içerir. Örnek tabloya iki satır ekler ve ardından tablodan verileri seçer.
Not
Bu tablonun görüntülenmesini ve okunmasını kolaylaştırmak için yalnızca beş sütunu vardır.
USE AdventureWorks2022;
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
Aşağıdaki örnekler, Örnek A'da oluşturulan tabloya iki satır ekler. Örneklerde seyrek sütunların adları kullanılır ve sütun kümesine başvurmaz.
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
Aşağıdaki örnek, A örneğinde oluşturulan tabloya üçüncü bir satır ekler. Bu kez seyrek sütunların adları kullanılmaz. Bunun yerine sütun kümesinin adı kullanılır ve ekleme işlemi, XML biçimindeki dört seyrek sütundan ikisinin değerlerini sağlar.
INSERT DocumentStoreWithColumnSet (DocID, Title, SpecialPurposeColumns)
VALUES (3, 'Tire Spec 2', '<ProductionSpecification>AXW9R411</ProductionSpecification><ProductionLocation>38</ProductionLocation>');
GO
Aşağıdaki örnek, sütun kümesi içeren tablodan tüm sütunları seçer. Seyrek sütunların birleştirilmiş değerlerini içeren bir XML sütunu döndürür. Seyrek sütunları tek tek döndürmez.
SELECT DocID, Title, SpecialPurposeColumns FROM DocumentStoreWithColumnSet ;
Sonuç kümesi aşağıdadı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>
Üretim departmanı pazarlama verileriyle ilgilenmediğinden, bu örnek çıkışı kısıtlamak için bir WHERE
yan tümcesi ekler. Örnekte sütun kümesinin adı kullanılır.
SELECT DocID, Title, SpecialPurposeColumns
FROM DocumentStoreWithColumnSet
WHERE ProductionSpecification IS NOT NULL ;
Sonuç kümesi aşağıdadır.
DocID Title SpecialPurposeColumns
1 Tire Spec 1 <ProductionSpecification>AXZZ217</ProductionSpecification><ProductionLocation>27</ProductionLocation>
3 Tire Spec 2 <ProductionSpecification>AXW9R411</ProductionSpecification><ProductionLocation>38</ProductionLocation>
Tablo bir sütun kümesi içerdiğinde, aşağıdaki örnekte gösterildiği gibi tek tek sütun adlarını kullanarak tabloyu sorgulamaya devam edebilirsiniz.
SELECT DocID, Title, ProductionSpecification, ProductionLocation
FROM DocumentStoreWithColumnSet
WHERE ProductionSpecification IS NOT NULL ;
Sonuç kümesi aşağıdadır.
DocID Title ProductionSpecification ProductionLocation`
1 Tire Spec 1 AXZZ217 27`
3 Tire Spec 2 AXW9R411 38`
Aşağıdaki örnek, üçüncü kaydı bu satır tarafından kullanılan her iki seyrek sütun için yeni değerlerle güncelleştirir.
UPDATE DocumentStoreWithColumnSet
SET SpecialPurposeColumns = '<ProductionSpecification>ZZ285W</ProductionSpecification><ProductionLocation>38</ProductionLocation>'
WHERE DocID = 3 ;
GO
Önemli
Sütun kümesi kullanan update deyimi, tablodaki tüm seyrek sütunları güncelleştirir. Referans verilmeyen seyrek sütunlar NULL
olarak güncellenir.
Aşağıdaki örnek üçüncü kaydı güncelleştirir, ancak yalnızca doldurulan iki sütundan birinin değerini belirtir. İkinci sütun ProductionLocation
UPDATE
deyimine dahil değildir ve NULL
olarak güncelleştirilir.
UPDATE DocumentStoreWithColumnSet
SET SpecialPurposeColumns = '<ProductionSpecification>ZZ285W</ProductionSpecification>'
WHERE DocID = 3 ;
GO
Ekinlikler
31 Mar 23 - 2 Nis 23
En büyük SQL, Fabric ve Power BI öğrenme etkinliği. 31 Mart – 2 Nisan. 400 ABD doları tasarruf etmek için FABINSIDER kodunu kullanın.
Bugün kaydolunEğitim
Öğrenme yolu
Use advance techniques in canvas apps to perform custom updates and optimization - Training
Use advance techniques in canvas apps to perform custom updates and optimization
Belgeler
Seyrek Sütunlar Kullan - SQL Server
Seyrek Sütunları Kullanma
Tablo Sütunu Özellikleri (SQL Server Management Studio) - SQL Server
Tablo Sütunu Özellikleri (SQL Server Management Studio)
Sütunlar için varsayılan değerleri belirtme - SQL Server
SQL Server Management Studio veya Transact-SQL ile tablo sütununa girilen varsayılan değeri belirtin.