hierarchyid (Transact-sql)

hierarchyidVeri türü olan bir değişken uzunluğu sistem veri türü. Kullanım hierarchyidhiyerarşisindeki konumunu temsil edecek. Bir sütun türü hierarchyidotomatik olarak bir ağaç temsil etmiyor. Oluşturmak ve atamak için uygulamaya kadar öyle hierarchyiddeğerleri böyle bir şekilde istenen ilişki satırları arasında değerler yansıtılır.

Değeri hierarchyidveri türünü gösteren bir ağaç hiyerarşisinde bir konuma. İçin değer hierarchyidaş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 ortalama fanout üzerinde (bir düğümünün ortalama sayısı) bağlıdır. (0-7) Küçük fanouts için 6 büyüklüğünde * günlükan bit, a ortalama fanout olduğu yerde. Bir düğümü hiyerarşide bir kuruluş 100.000 kişilik bir ortalama fanout 6 seviyeden yaklaşık 38 bit alır. Bu 40 bit veya depolama için 5 bayt olarak yuvarlanır.

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

    İki verilen hierarchyiddeğerlerini bir ve b, bir<b anlamına gelir bir ağaç derinliği ilk geçişi b önce gelir. Dizinler üzerinde hierarchyidveri türleridir derinliği ilk sırada ve düğümler birbirine yakındır derinliği ilk geçişi birbirine depolanır. Örneğin, bir kayıt alt kaydı bitişik depolanır. Daha fazla bilgi için, bkz. Hiyerarşik veri (SQL Server).

  • Rasgele eklemeler ve silmeler için destek

    Kullanarak GetDescendant yöntemi, her zaman belirli bir düğüm sağındaki solundaki herhangi bir belirtilen düğüm veya herhangi bir iki kardeş arasında bir kardeş oluşturmak mümkün olduğunu. Düğüm rasgele sayıda eklenen veya hiyerarşi silinmiş karşılaştırma özelliği korunur. Çoğu eklemeler ve silmeler anlatım özelliği korumak. Ancak, iki düğüm arasında eklemeler hierarchyid değerleri ile daha az kompakt üretecek gösterimi.

  • Kullanılan kodlamayı hierarchyidtürü 892 bayt sınırlı. Dolayısıyla, onların gösteriminde 892 bayt sığmayacak çok fazla düzeyi olan düğümler tarafından temsil hierarchyidtürü.

hierarchyidTürü için clr istemciler olarak SqlHierarchyIdveri türü.

Açıklamalar

hierarchyidTürü mantıksal olarak kodlayan bir hiyerarşi ağacında tek bir düğüm hakkında bilgi düğüm ağacının kök yolunu kodlayarak. Böyle bir yol mantıklı düğüm etiketleri tüm çocukların, sonra kök ziyaret dizisi olarak temsil edilir. Eğik gösterimi başlar ve yalnızca ziyaret kök yolu tek 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ırası nokta ile ayrılmış tamsayı dizileri karşılaştırarak gerçekleştirilir. Her düzey, eğik çizgiyle izliyor. Bu nedenle eğik veliler çocuklarının ayırır. Aşağıdaki örnek, geçerli hierarchyidyol uzunlukları 1, 2, 2, 3 ve 3 sırasıyla düzeyleri:

  • /

  • /1/

  • /0.3.-7/

  • /1/3/

  • /0.1/0.2/

Düğüm içinde herhangi bir yere eklenebilir. Sonra eklenen düğümler /1/2/ ama önce /1/3/ olarak temsil /1/2.5/. Düğümler önce 0 mantıksal gösterimi olarak negatif bir sayı eklenir. Örneğin, önce gelen bir düğüm /1/1/ olarak temsil /1/1 /. Düğümler sıfır olamaz. Örneğin, /1/1.1/ geçerli olduğu ama /1/1.01/ geçerli değil. Hataları önlemek için düğümleri kullanarak ekleme GetDescendant yöntemi.

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

hierarchyidVeri türü diğer veri türleri aşağıdaki gibi dönüştürülebilir:

  • Kullanım ToString() dönüştürmek için yöntem hierarchyiddeğer mantıksal gösterimi bir nvarchar(4000)veri türü.

  • Use Read () and Write () to convert hierarchyid to varbinary.

  • Dönüştürme hierarchyidxml için desteklenmiyor. İletmek için hierarchyidsoap aracılığıyla parametreleri ilk dizeleri olarak onları dökme. Bir tablo ile for xml yan tümcesi içeren bir sorgu başarısız olur hierarchyidsürece sütun ilk bir karakter veri türü dönüştürülür.

Veritabanı yükseltme

Ne zaman bir veritabanı yükseltilmiş için SQL Server 2012, yeni derleme ve hierarchyidveri türü otomatik olarak yüklenecek. Yükseltme Danışmanı kuralları, kullanıcı türü veya montajları ile Çakışan adlar bulmak. Yükseltme Danışmanı'nı, çakışan herhangi bir montaj ve çelişen her türlü yeniden adlandırma yeniden adlandırmayı veya önceden varolan kullanıcı türü için başvurmak için kodu Şemaiki bölümü adları kullanarak bildirecektir.

Veritabanı yükseltme çakışan ada sahip bir kullanıcı derleme algılarsa, bunu otomatik olarak bu birleştirmeyi yeniden adlandırmak ve şüpheli moduna veritabanı.

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

Hierarchyid sütunları çoğaltılan tablolarda kullanma

Sütun türü hierarchyidherhangi bir yinelenen tablo kullanılabilir. Uygulamanızın gereksinimlerini tek yönlü veya çift yönlü çoğaltma olmasına ve sürümleri bağlı SQL Serverkullanılan.

Tek yönlü çoğaltma

Tek yönlü çoğaltma, anlık görüntü çoğaltma, işlem çoğaltma ve birleştirme çoğaltması değişiklikleri Abone tarafında yapılmamıştır içerir. Nasıl hierachyidile tek yönlü çoğaltma sütun iş sürümüne bağlıdır SQL Serverabone çalışıyor.

  • A SQL Server 2012Publisher çoğaltabilirsiniz hierachyidsütun için bir SQL Server 2012abone olmadan tüm noktalar.

  • A SQL Server 2012Publisher dönüştürmeniz gerekir hierarchyidiçin çalıştıran bir abone çoğaltılması için sütun SQL Server Compactya da önceki bir sürümünü SQL Server. SQL Server Compactve önceki sürümlerinde SQL Serverdesteklemediği hierarchyidsütun. Bu sürümlerden birini kullanıyorsanız, bir abone veri hala çoğaltabilirsiniz. Sütun bir uyumlu veri türüne dönüştürülemez böylece bunun için size bir şema seçeneği veya yayını uyumluluk (birleştirme çoğaltma) düzeyinde ayarlamanız gerekir.

Sütun filtresini hem de bu senaryoları desteklenir. Bu filtreleyerek içerir hierarchyidsütun. Satır süzme desteklenir filtre dahil olarak bir hierarchyidsütun.

İki yönlü çoğaltma

İki yönlü çoğaltma işlem çoğaltma güncelleştirme abonelikleri, eşler arası işlem çoğaltma ve birleştirme çoğaltması değişiklikleri Abone tarafında yapılan içerir. Çoğaltma bir tabloyla yapılandırmanıza olanak hierarchyidsütun iki yönlü çoğaltma için. Aşağıdaki gereksinimleri ve değerlendirmeleri unutmayın.

  • Yayımcı ve tüm aboneleri çalışıyor olması gerekir SQL Server 2012.

  • Çoğaltma bayt olarak veri çoğaltır ve hiyerarşi bütünlüğünü sağlamak için herhangi bir doğrulama gerçekleştirmez.

  • Hedefe çoğalttığınızda, hiyerarşi (abone veya Publisher) kaynakta yapılan değişiklikleri korunmaz.

  • Karma değerleri için hierarchyidsütunlar içinde onlar oluşturulur veritabanına özel. Bu nedenle, aynı değeri Publisher ve abone üzerinde oluşturulabilir, ancak farklı satırlara uygulanan. Çoğaltma bu durumu kontrol değil ve hiçbir şekilde yerleşik bölüm hierarchyidsütun değerleri olarak kimlik sütunları için. Uygulama kısıtlamaları veya diğer mekanizmaları algılanmayan bu tür çakışmaları önlemek için kullanmanız gerekir.

  • Abone eklenen satırlar artık mümkündür. Üst satır eklenen satır Yayımcı tarafında silinmiş olabilir. Satır Abone Yayımcı tarafında takıldığında bu algılanmayan bir çatışma olur.

  • Sütun süzgeçlerini can't filtre NULL olmayan-olabilecek hierarchyidsütunlar: hiçbir varsayılan değeri olduğundan abone gelen ekler başarısız olur hierarchyidPublisher sütun.

  • Satır süzme desteklenir filtre dahil olarak bir hierarchyidsütun.

Ayrıca bkz.

Kavramlar

Hiyerarşik veri (SQL Server)

hierarchyid veri türü yöntemi başvurusu