Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Microsoft Fabric'te SQL veritabanı
hierarchyid veri türü, değişken uzunlukta bir sistem veri türüdür. Hiyerarşideki konumu göstermek için hierarchyid kullanın. Hierarchyid türünde bir sütun otomatik olarak bir ağacı temsil etmez. Satırlar arasındaki istenen ilişkinin değerlere yansıtılması için hierarchyid değerleri oluşturmak ve atamak uygulamaya bağlıdır.
hierarchyid veri türünün değeri, ağaç hiyerarşisindeki bir konumu temsil eder. hierarchyid değerleri aşağıdaki özelliklere sahiptir:
Son derece kompakt: N düğüm içeren bir ağaçtaki bir düğümü temsil etmek için gereken ortalama bit sayısı, ortalama kesintiye (bir düğümün alt öğelerinin ortalama sayısı) bağlıdır. Küçük fanout'lar (0-7) için boyut yaklaşık 6 * logA n bittir ve burada A ortalama bir fanout'tır. Ortalama altı düzeye sahip 100.000 kişilik bir kuruluş hiyerarşisindeki düğüm yaklaşık 38 bit alır. Bu, depolama için 40 bit veya 5 bayt'a kadar yuvarlanmış olur.
Karşılaştırma derinlemesine ilk sıradadır: İki hierarchyid değeri
avebdeğeri verildiğinde,a<ba, ağacın derinlik öncelikli geçişinin b'den önce geldiği anlamına gelir. hierarchyid veri türlerindeki dizinler derinlemesine ilk sıradadır ve derinlik öncelikli geçişte birbirine yakın düğümler birbirine yakın bir şekilde depolanır. Örneğin, bir kaydın alt öğeleri bu kayda bitişik olarak depolanır. Daha fazla bilgi için bkz . Hiyerarşik veriler (SQL Server).Rastgele ekleme ve silme desteği: GetDescendant yöntemini kullanarak, belirli bir düğümün sağındaki, belirli bir düğümün solunda veya herhangi iki eşdüzey arasında eşdüzey oluşturmak her zaman mümkündür. Hiyerarşiden rastgele sayıda düğüm eklendiğinde veya silindiğinde karşılaştırma özelliği korunur. Çoğu ekleme ve silme işlemi sıkıştırma özelliğini korur. Ancak, iki düğüm arasındaki eklemeler biraz daha az küçük bir gösterimle hierarchyid değerleri üretir.
Kodlama 892 bayt ile sınırlıdır: Bu nedenle, gösterimlerinde 892 bayta sığmayacak kadar çok düzeye sahip düğümler hierarchyid türüyle temsil edilemez.
Hierarchyid türü, veri türü olarak SqlHierarchyId ortak dil çalışma zamanı (CLR) istemcileri tarafından kullanılabilir.
Remarks
hierarchyid türü, ağaç kökünden düğüme giden yolu kodlayarak bir hiyerarşi ağacındaki tek bir düğüm hakkındaki bilgileri mantıksal olarak kodlar. Böyle bir yol mantıksal olarak kök sonra ziyaret edilen tüm alt öğelerin düğüm etiketleri dizisi olarak temsil edilir. Eğik çizgi gösterimi başlatır ve yalnızca kökü ziyaret eden bir yol tek bir eğik çizgiyle temsil edilir. Kökün altındaki düzeyler için her etiket noktalarla ayrılmış bir tamsayı dizisi olarak kodlanır.
Alt öğeler arasındaki karşılaştırma, sözlük sırasında noktalarla ayrılmış tamsayı dizileri karşılaştırılarak gerçekleştirilir. Her düzeyin ardından eğik çizgi eklenir. Bu nedenle eğik çizgi, ebeveynleri çocuklarından ayırır. Örneğin, sırasıyla 1, 2, 2, 3 ve 3 düzeylerinde geçerli hierarchyid yolları şunlardır:
//1//0.3.-7//1/3//0.1/0.2/
Düğümler herhangi bir konuma eklenebilir. Sonrasında /1/2/ ancak öncesinde /1/3/ eklenen düğümler olarak /1/2.5/gösterilebilir. Daha önce 0 eklenen düğümlerin mantıksal gösterimi negatif bir sayıdır. Örneğin, daha önce /1/1/ gelen bir düğüm olarak /1/-1/temsil edilebilir. Düğümlerin başında sıfır olamaz. Örneğin, /1/1.1/ geçerli, ancak /1/1.01/ geçerli değil. Hataları önlemek için GetDescendant yöntemini kullanarak düğüm ekleyin.
Veri türü dönüştürme
hierarchyid veri türü aşağıdaki gibi diğer veri türlerine dönüştürülebilir:
Hierarchyid değerini nvarchar(4000) veri türü olarak mantıksal gösterime dönüştürmek için ToString yöntemini kullanın.
Hierarchyid değerini varbinary'ye dönüştürmek için CSharp ve Write kullanarak Okuma (Veritabanı Altyapısı) kullanın.
HIERARCHYID parametrelerini SOAP aracılığıyla iletmek için önce bunları dize olarak yayınlar.
Veritabanlarını yükseltme
Veritabanı SQL Server'ın daha yeni bir sürümüne yükseltildiğinde, yeni derleme ve hierarchyid veri türü otomatik olarak yüklenir. Yükseltme danışmanı kuralları, çakışan adlara sahip tüm kullanıcı türlerini veya derlemeleri algılar. Yükseltme danışmanı, çakışan tüm derlemelerin yeniden adlandırılması ve çakışan herhangi bir türün yeniden adlandırılması veya bu önceden var olan kullanıcı türüne başvurmak için kodda iki parçalı adların kullanılması önerisinde bulunur.
Veritabanı yükseltmesi çakışan ada sahip bir kullanıcı derlemesi algılarsa, bu derlemeyi otomatik olarak yeniden adlandırır ve veritabanını şüpheli moduna alır.
Yükseltme sırasında adı çakışan bir kullanıcı türü varsa, özel bir adım atılır. Yükseltmeden sonra hem eski kullanıcı türü hem de yeni sistem türü vardır. Kullanıcı türü yalnızca iki bölümlü adlarla kullanılabilir.
Çoğaltılan tablolarda hierarchyid sütunlarını kullanma
hierarchyid türündeki sütunlar çoğaltılan herhangi bir tabloda kullanılabilir. Uygulamanızın gereksinimleri, çoğaltmanın tek yönlü veya çift yönlü olmasına ve kullanılan SQL Server sürümlerine bağlıdır.
Tek yönlü çoğaltma
Tek yönlü çoğaltma, abonede değişiklik yapılmayan anlık görüntü çoğaltma, işlem çoğaltması ve birleştirme çoğaltmasını içerir. hierarchyid sütunlarının tek yönlü çoğaltmayla nasıl çalıştığı Abonenin çalıştırılan SQL Server sürümüne bağlıdır.
SQL Server Publisher, hierarchyid sütunlarını özel bir husus olmadan aynı sürüme sahip bir SQL Server Abonesine çoğaltabilir.
SQL Server Yayımcısı , hierarchyid sütunlarını SQL Server Compact veya SQL Server'ın önceki bir sürümünü çalıştıran aboneye çoğaltmak için dönüştürmelidir. SQL Server Compact ve önceki SQL Server sürümleri hierarchyid sütunlarını desteklemez. Bu sürümlerden birini kullanıyorsanız verileri aboneye yine de çoğaltabilirsiniz. Bunu yapmak için, sütunun uyumlu bir veri türüne dönüştürülebilmesi için bir şema seçeneği veya yayın uyumluluk düzeyi (birleştirme çoğaltması için) ayarlamanız gerekir.
Sütun filtreleme bu senaryoların her ikisinde de desteklenir. Bu, hierarchyid sütunlarını filtrelemeyi içerir. Satır filtreleme, filtre bir hierarchyid sütunu içermediği sürece desteklenir.
çift yönlü çoğaltma
çift yönlü çoğaltma abonelikleri güncelleştirme, eşler arası işlem çoğaltması ve abonede değişikliklerin yapıldığı birleştirme çoğaltması ile işlem çoğaltmasını içerir. Çoğaltma, çift yönlü çoğaltma için hierarchyid sütunları olan bir tablo yapılandırmanızı sağlar. Aşağıdaki gereksinimlere ve dikkat edilmesi gerekenlere dikkat edin.
Yayımcı ve tüm Aboneler, SQL Server 2016 (13.x) veya sonraki bir sürümde aynı sürümü çalıştırıyor olmalıdır.
Çoğaltma, verileri bayt olarak çoğaltır ve hiyerarşinin bütünlüğünü sağlamak için herhangi bir doğrulama gerçekleştirmez.
Kaynakta (Abone veya Yayımcı) yapılan değişikliklerin hiyerarşisi hedefe çoğaltıldığında korunmaz.
Hierarchyid sütunlarının değerleri tüm veritabanlarında aynı ikili gösterimlere sahip olabilir. Uygulama mantığı farklı varlıklar için aynı hiyerarşi kimliğini bağımsız olarak oluşturduğunda çift yönlü çoğaltmada çakışmalar oluşabilir. Bu nedenle, Yayımcı ve Abone üzerinde aynı değer oluşturulabilir, ancak farklı satırlara uygulanabilir. Çoğaltma bu koşulu denetlemez ve hierarchyid sütun değerlerini sütunlar için
IDENTITYolduğu gibi bölümlemenin yerleşik bir yolu yoktur. Uygulamaların bu tür algılanmayan çakışmaları önlemek için kısıtlamalar veya başka mekanizmalar kullanması gerekir.Aboneye eklenen satırların yalnız bırakılmış olması mümkündür. Eklenen satırın üst satırı Publisher'da silinebilir. Bu, Aboneden gelen satır Yayımcı'ya eklendiğinde algılanmayan bir çakışmaya neden olur.
Sütun filtreleri null değer atanamayan hierarchyid sütunlarını filtreleyemez. Publisher'da hierarchyid sütunu için varsayılan değer olmadığından Aboneden eklemeler başarısız olur.
Satır filtreleme, filtre bir hierarchyid sütunu içermediği sürece desteklenir.