hierarchyid (Transact-SQL)

The hierarchyid data type is a variable length, system data type.Kullanımı hierarchyid bir sıradüzeni içindeki konumunu temsil etmek için . Sütun türü hierarchyid otomatik olarak bir ağaç göstermiyor. Uygulama oluşturmak ve atamak için en fazla olduğu hierarchyid satırları arasında istediğiniz ilişki değerleri yansıtılır şekilde değerleri.

Değeri hierarchyid veri türü, bir ağaç sıradüzeni konumu gösterir. Değerleri hierarchyid aşağıdaki özelliklere sahiptir:

  • Çok sıkıştırma

    Ortalama bit sayısı ne kadar bir ağacındaki bir düğümle temsil etmek için gerekli olan n düğümlerin ortalama fanout (bir düğümünün ortalama sayısı) göre değişir.(0-7) Küçük fanouts için yaklaşık 6 boyutudur * günlükCn bitlerini burada A ortalama fanout. Bir kuruluş hiyerarşisiyle 100.000 kişilerin bir ortalama fanout 6 düzeyden BIR düğümünde yaklaşık 38 bit alır.Bu 40 bit veya depolama ortamı için 5 bayt olarak yukarı yuvarlanır.

  • Karşılaştırma derinliği ilk sırada olan

    Iki verilen hierarchyid Değerler C and b, C<b anlamýna gelir bir ağacın bir derinlik ilk geçişi b'de önce gelir. Dizinleri hierarchyid veri türleri derinliği ilk sırada olan ve birbirine düğümler birbirine yakın için Derinlik ilk bir çapraz geçiş depolanır. Örneğin, bir kaydın alt bitişik kaydı saklanır.Daha fazla bilgi için bkz:Hierarchyid veri türleri (Veritabanı Altyapısı) kullanma.

  • Rasgele eklemeleri ve silmeleri desteği

    Kullanarak GetDescendant yöntem, her zaman belirli bir düğümün, sağdan sola, verilen herhangi bir düğümde veya arasındaki herhangi iki eşi için bir eş oluşturmak olanaklıdır.Rasgele bir düğüm sayısı eklendiğinde veya sıradüzeni silinmiş karşılaştırma özellik korunur.Çoğu eklemeleri ve silmeleri compactness özelliğini korur.Ancak, biraz daha az bir CD hierarchyid değerlerle eklenenleri iki düğüm arasında üretecektir gösterimi.

  • Kullanılan kodlamayı hierarchyid Tür, 892 baytla sınırlıdır. Sonuç olarak, kendi gösteriminde 892 baytlara sığdırmak için çok fazla düzeyi olan düğümler tarafından temsil edilemeyen hierarchyid TYPE.

The hierarchyid type is available to CLR clients as the SqlHierarchyId data type.

Remarks

The hierarchyid type logically encodes information about a single node in a hiyerarşi ağacı by encoding the yol from the root of the tree to the node. Bir yol, mantıksal olarak kök sonra ziyaret ettiği tüm alt düğüm etiketleri olarak gösterilir.Eğik çizgi gösterimi başlatır ve yalnızca kök ziyaretleri bir yol, tek bir eğik çizgiyle gösterilir.Kök altındaki düzeyleri için her etiket, tamsayılar, noktalarla ayrılmış bir dizi olarak kodlanır.Çocuklar arasında karşılaştırma nokta sözlük sırada ayrılmış tamsayı serilerini karşılaştırarak gerçekleştirilir.Her düzey, eğik çizgiyle gelir.Bu nedenle bir eğik çizgi, bunların alt öğeleri Ebeveynlerin ayırır.Örneğin, geçerli şunlardır: 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.Sonra eklenen düğüm / 1/2 / önce**/ 1/3 /** gösterilebilir./ 2. 1/5 /.Negatif bir sayı şeklinde bir mantıksal gösterimi 0 önce eklenen düğüm.Örneğin, önce gelen bir düğüm / 1/1 / gösterilebilir./1 /-1 /.Düğümlerin önünde sıfır olamaz.Örneğin, / 1/1.1 / geçerlidir, ancak / 1/1.01 / geçerli değil.Hataları önlemek için , düğümlerin kullanarak ekleme GetDescendant yöntem.

Veri türü dönüştürme

The hierarchyid data type can be converted to other data types as follows:

  • Use ToString() Dönüştürülecek yöntemhierarchyid değer bir mantıksal gösterimi bir nvarchar(4000) Veri Türü.

  • Kullanımı Oku (.) and () Yazın. dönüştürmek içinhierarchyid Kime varbinary.

  • Dönüştürme hierarchyid XML için desteklenmiyor. Aktarmak için hierarchyid SOAP aracılığıyla parametreleri önce bunları dize olarak atama. FOR XML yan tümce içeren sorgu, bir tablo ile başarısız olur hierarchyid sütunun ilk olmadığı sürece, bir karakter veri türüne dönüştürülür.

Veritabanı Yükseltiliyor

Bir veritabanı için yükseltme SQL Server 2008, yeni derleme ve hierarchyid veri türünü otomatik olarak yüklenir. Upgrade advisor kuralları, herhangi bir kullanıcı türünü veya çakışan adlarla derlemeler algılar.Upgrade advisor, çakışan bir derleme ve çakışan herhangi bir tür yeniden yeniden adlandırmak veya için hazır, kullanıcı türünü belirtmek için kod, iki parça adlarını kullanarak önerme.

Bir veritabanı yükseltmesini çakışan bir ada sahip bir kullanıcı derleme algılarsa, bunu otomatik olarak bu derleme yeniden adlandırın ve veritabanı şüpheli moduna put.

Yükseltme sırasında çakışan bir ada sahip bir kullanıcı tipi varsa, hiçbir özel adımlar alınır.Yükseltmeden sonra eski kullanıcı türü hem yeni sistem türü yer alır.Kullanıcı türü, yalnızca iki bölümü adları yoluyla kullanılabilir.

Yinelenen tablolar içinde hierarchyid sütunları kullanma

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ümlerini bağlıdır. SQL Server kullanılan.

Tek yönlü çoğaltma

Tek yönlü çoğaltma değişiklikleri Abone tarafında yapıldığı değil birleştirme çoğaltması anlık görüntü çoğaltması çoğaltması ve işlem çoğaltması içerir.Nasıl hierachyid sütunları tek tek yönlü çoğaltma sürümüne göre değişir çalışma SQL Server Abone çalışıyor.

  • C SQL Server 2008 Yayımcı'ın çoğaltabilirsiniz hierachyid sütun için bir SQL Server 2008 Abone olmadan herhangi bir özel hususlar.

  • A SQL Server 2008 Publisher must convert hierarchyid columns to replicate them to a Subscriber that is running SQL Server Compact 3.5 SP1 or an earlier version of SQL Server.SQL Server Compact 3.5 SP1 and earlier versions of SQL Server do not support hierarchyid columns.Bu sürümlerden birini kullanıyorsanız, bir abone için hala veri çoğaltabilirsiniz.sütun bir uyumlu bir veri türüne dönüştürülür; böylece bunu yapmak için bir şema seçeneği veya yayın uyumluluk (birleştirme çoğaltma) düzey ayarlamanız gerekir.Daha fazla bilgi için bkz:Bir çoğaltma topolojisi SQL Server birden çok sürümünü kullanma.

Sütun süzme, her ikisi de aşağıdaki senaryolardan biri desteklenir.Bu filtresi içerir. hierarchyid sütunlar. Süzgeç dahil et olarak satır süzme desteklenen bir hierarchyid sütun.

Çift yönlü çoğaltma

Çift yönlü çoğaltma güncelleştirme abonelikler, eşler arası işlem çoğaltması ve birleştirme çoğaltması değişiklikleri Abone tarafında yapılan işlem çoğaltması içerir.Çoğaltma içeren bir tablo yapılandırmanıza olanak verir hierarchyid çift yönlü çoğaltma için sütunlar. Aşağıdaki gereksinimleri ve değerlendirmeleri unutmayın.

  • Yayımcı ve tüm abonelere çalıştırıyor olmanız gerekir SQL Server 2008.

  • Çoğaltma, bayt olarak veri çoğaltır ve sıradüzeni bütünlüğünü sağlamak için tüm doğrulamaz.

  • Bunlar hedef yinelediğinizde hiyerarşisini kaynakta (abone veya Yayımcı) yapılan değişiklikler korunur.

  • Karma değerleri hierarchyid sütunları, bunlar oluşturulan veritabanına özgüdür. Bu nedenle, aynı değeri, yayımcı ve abone oluşturulabilir, ancak farklı bir satır için uygulanabilir.Çoğaltma, bu koşulu denetlemez ve bu bölüme yerleşik bir yolu yoktur hierarchyid Sütun değerleri olarak orada IDENTITY sütunu için olur. Uygulama kısıtlamaları'nı veya diğer algılanmayan tür çakışmaları önlemek için kullanmalısınız.

  • Abone üzerinde eklenen satır artık olanaklıdır.Eklenen satıra, üst satır, Yayımcı tarafında silinmiş olabilir.Bu algılanmayan bir çakışma oluşur, gelen satır abone yayımcı tarafına eklenir.

  • Sütun süzgeçlerini NULL olmayan süzemezsiniz hierarchyid sütunlar: için varsayılan değeri olduğundan, abonenin gelen ekler başarısız olurhierarchyid Yayımcı sütun.

  • Süzgeç dahil et olarak satır süzme desteklenen bir hierarchyid sütun.