hierarchyid (Transact-SQL)
hierarchyid Veri türü olan bir değişken uzunlukta, sistem veri türü.Use hierarchyid gösteren konumda hiyerarşisi.sütun türü hierarchyid otomatik olarak gösteren bir ağaç.Oluşturmak ve atamak için uygulama kadar olan hierarchyid şekilde, satırlar arasında oluşturmak istediğiniz ilişkiyi değerleri yansıtılır değerleri
Değeri hierarchyid veri türünü gösteren bir pozisyonda bir ağaç sıradüzeni.İçin değer hierarchyid aşağıdaki özelliklere sahip:
Son derece kompakt
Ortalama ile ağacındaki bir düğümü temsil etmek için gerekli bit sayısı n düğümleri (bir düğümünün ortalama sayısı) ortalama fanout üzerinde bağlıdır.Küçük fanouts (0-7), 6 boyutudur * günlükan bit, a ortalama fanout burada.Bir düğüm hiyerarşide bir kuruluş 100.000 kişi 6 düzeylerinin bir ortalama fanout yaklaşık 38 bitleri alır.Bu 40 bit veya depolama için 5 bayt yuvarlanır.
Karşılaştırma derinliği ilk sırada olduğu
İki verilen hierarchyid değerlerini bir ve b, bir<b anlamına gelir bir ağaç derinliği ilk geçişi b önce gelir.Dizinler üzerinde hierarchyid veri türleridir derinliği ilk sırada ve derinliği ilk geçişi olarak birbirlerine yakın düğümler birbirine yakın depolanır.Örneğin, bir kayıt alt kaydı bitişik depolanır.Daha fazla bilgi için, bkz. Hierarchyid veri türleri (veritabanı altyapısı) kullanma.
Rasgele eklemeler ve silmeler için destek
Kullanarak GetDescendant yöntem, onu her zaman bir kardeş herhangi belirli bir düğüm sağa sola herhangi bir düğüm veya herhangi iki eşdüzey arasında üretmek olanaklı.Rasgele sayıda düğüm eklendiğinde veya hiyerarşisinden silinebilir karşılaştırma özellik korunur.Çoğu eklenen ve silinenler compactness özellikkorur.Ancak, iki düğüm arasında eklemeler hierarchyid değerleri biraz daha az bir CD ile üretecektir gösterimi.
Kullanılan kodlama hierarchyid türü olan sınırlı 892 bayt.Sonuç olarak, 892 bayt içine uyma kendi gösteriminde çok fazla düzeyi olan düğümler tarafından temsil edilemeyen hierarchyid türü.
hierarchyid Türü clr istemciler için kullanılabilir olan SqlHierarchyId veri türü.
Açıklamalar
hierarchyid Türü mantıksal olarak tek bir düğüm düğüm. ağacın kökü yol kodlama tarafından hiyerarşi ağacı hakkında bilgi kodlarMantıksal olarak, bu tür yol kök sonra ziyaret ettiğiniz tüm alt düğüm etiketleri dizisi olarak temsil edilir.Eğik çizgi temsili başlatır ve yalnızca kök gerçekleşmesi bir yol tek bir eğik çizgiyle gösterilir.Kök altındaki düzeyleri için her etiketin noktalarla ayrılmış tamsayılar dizisi olarak kodlanır.Çocuklar arasında karşılaştırma sözlük sıralaması noktalı virgülle ayrılmış tamsayı sıralarını karşılaştırarak gerçekleştirilir.Her düzey , eğik çizgiyle izledi.Bu nedenle bir eğik çizgi ebeveynler çocuklarının ayırır.Aşağıdaki örnek, geçerli hierarchyid yollarını uzunlukları 1, 2, 2, 3 ve 3 sırasıyla düzeyleri:
/
/1/
/0.3.-7/
/1/3/
/0.1/0.2/
Düğümler, herhangi bir yere eklenebilir.Düğümlere eklenen sonra /1/2/ ama önce /1/3/ olarak gösterilen /1/2.5/.Önce 0 mantıksal gösterimi negatif bir sayı olarak eklenen düğüm.Örneğin, önce gelen bir düğüm /1/1/ olarak gösterilen /1 /-1 /.Düğüm başına sıfır olamaz.Örneğin, /1/1.1/ geçerlidir, ancak /1/1.01/ geçerli değil.Hataları önlemek için kullanarak düğümleri ekleyin GetDescendant yöntem.
Veri türü dönüştürme
hierarchyid Veri türü dönüştürülebilir diğer veri türleri aşağıdaki gibi:
Use ToString() dönüştürmek içinyöntem hierarchyid değer mantıksal gösterimi bir nvarchar(4000) veri türü.
Use Read () and Write () to convert hierarchyid to varbinary.
Dönüştürme işlemi hierarchyid xml için desteklenmiyor.İletmek için hierarchyid soap aracılığıyla parametreleri önce bunları dize olarak atamaBir tablo ile for xml yan tümce içeren sorgu başarısız olur hierarchyid olmadığı sürece, ilk sütun dönüştürülmüş bir karakter veri türü.
Veritabanları yükseltiliyor
Bir veritabanı ne zaman yükseltme için SQL Server 2008, yeni derleme ve hierarchyid veri türü otomatik olarak yüklenir.Danışmanı kuralları algılamak , herhangi bir kullanıcı türünü veya çakışan adlar Derlemelerle yükseltin.Yükseltme Danışmanı'nı tüm çakışan derlemeve çakışan her türlü yeniden adlandırma veya o zaten varolan kullanıcı tipine için kod, iki parçalı adlarını kullanarak yeniden adlandırılmasını önerilerde bulunabilir.
Veritabanı Yükseltme çakışan ada sahip bir kullanıcı derleme algılarsa, bunu otomatik olarak derleme yeniden adlandırın ve şüpheli moduna veritabanı.
Yükseltme sırasında çakışan ada sahip bir kullanıcı türü varsa, hiçbir özel adımlar alınır.Yükseltme sonrasında, hem eski kullanıcı türünü hem de yeni sistem türü yer alır.Kullanıcı türü yalnızca iki bölümü adları yoluyla kullanılabilir duruma geçer.
Hierarchyid sütunları Çoğaltılan tablolarda kullanarak
Sütun türü hierarchyid herhangi bir yinelenen tabloüzerinde kullanılabilir.Uygulamanızın gereksinimlerini çoğaltma tek yönlü veya çift yönlü olup olmadığı ve sürümleri bağlı SQL Server kullanılan.
Tek yönlü çoğaltma
Tek yönlü çoğaltma anlık görüntüçoğaltma, işlem çoğaltmave birleştirme çoğaltması değişiklikleri Abone tarafında getirilir içerir. Nasıl hierachyid sütunları çalışmak tek yönlü çoğaltma bağlıdır sürüm SQL Server abone olduğu çalışan.
A SQL Server 2008 Yayımcı çoğaltma hierachyid sütun için bir SQL Server 2008 abone olmadan özel bir dikkat edilmesi gereken noktalar.
A SQL Server 2008 Yayımcı gerekir dönüştürmek hierarchyid çalışan bir aboneye çoğaltmak için sütun SQL Server Compact 3.5 SP1 veya bir önceki sürüm SQL Server.SQL Server Compact 3.5 SP1ve önceki sürümlerinde SQL Server desteklemez hierarchyid sütunlar.Bu sürümlerden birini kullanıyorsanız, bir abone veri yine de çoğaltabilirsiniz.Bunu yapmak için küme bir şema seçeneği veya yayın Uyumluluk düzey ( birleştirme çoğaltması) gerekir bir uyumlu veri türü sütun dönüştürülebilir şekilde.Daha fazla bilgi için, bkz. SQL Server birden çok sürümünü kullanarak bir çoğaltma topolojisi içinde.
Sütun filtresini hem bu senaryoları desteklenir.Bu filtre uygulayarak içerir hierarchyid sütunlar.Satır süzme desteklenir filtre ekleme sürece bir hierarchyid sütun.
Çift yönlü çoğaltma
Çift yönlü çoğaltma işlem çoğaltma abonelikleri güncelleştirme, eşler arası işlem çoğaltmave birleştirme çoğaltması değişiklikleri Abone tarafında yapılan içerir.Çoğaltma içeren bir tablo yapılandırmanıza olanak hierarchyid iki yönlü çoğaltmaiçin sütunlar.Aşağıdaki gereksinimleri ve değerlendirmeleri unutmayın.
Yayımcı ve tüm aboneleri çalışmalıdır SQL Server 2008.
Çoğaltma bayt olarak veri çoğaltır ve hiyerarşi bütünlük güvence altına almak için herhangi bir doğrulama gerçekleştirmez.
hedefçoğalttığınızda hiyerarşisini, kaynak (abone veya Yayımcı) yapılan değişiklikler korunmaz.
Karma değerleri için hierarchyid Sütunlar içinde bunlar oluşturulur veritabanına özel.Bu nedenle, aynı değeri Yayımcı ve abone üzerinde oluşturulabilir, ancak farklı satırlara uygulanan.Çoğaltma, bu koşulu denetlemez ve bölüm için yerleşik bir yolu yoktur hierarchyid sütun değerleri için kimlik sütunlarının gibi.Uygulamaları, kısıtlamaları veya diğer mekanizmaları, algılanmayan bu tür çakışmaları önlemek için kullanmalıdır.
Abone üzerinde eklenen satırlar artık mümkündür.Eklenen satırın üst satır ' % s'yayımcı Yayımcıtarafında silinmiş olabilir.Bu sonuçlar ' % s'yayımcı Yayımcıtarafında abone satırdan eklendiğinde algılanmayan bir çakışma.
Column filters süzemiyorum yapılamayan hierarchyid sütun: hiçbir varsayılan değeri olduğundan abone gelen ekler başarısız olur Yayımcısütunhierarchyid.
Satır süzme desteklenir filtre ekleme sürece bir hierarchyid sütun.