Belirtiler
SQL Server 2014 veya 2016 Analysis Services örneğinde ölçü grubu için ilişkisel OLAP (ROLAP) depolama modu kullandığınızı varsayalım. Maxrolaporconditions gelişmiş özelliğinin değerini 256 'dan daha fazlasına ayarladıktan sonra, bu ölçü grubunda MDX sorgularını yürütün. Bu durumda, aşağıdakine benzer hatalar alırsınız:
DOM ayrıştırıcısı #Error akımı yüklemeyi ve ayrıştırmayı başaramadı. URL: ' ' Reason: ' Işlem iptal edildi: Max-element-Depth kısıtlaması ihlal edildi. ' Kaynak: ' '. Dosya konumu: 0. Satır: 6.
Neden
Analysis Services, daha sonra ilişkisel kaynağa gönderilen son SQL deyiminin oluşturulması için bir XML stil sayfası aracılığıyla ayrıştırılabilen bir sözde SQL XML belgesi oluşturur. İlk iç XML belgesi oluştururken veya bir sütunun koşulları aşağıdaki örnekte olduğu gibi iç içe XML öğeleri olarak oluşturulur:
<OR> <Condition>column1 = value1</Condition> <OR> <Condition>column1 = value2</Condition> <OR> <Condition>column1 = value3</Condition> </OR> </OR></OR>
XML belgesini oluşturmak için Analysis Services tarafından kullanılan bir MSXML DOM nesnesinin varsayılan maxElementDepth ÖZELLIĞI MSXML 6.0'da 256. bu nedenle, Maxrolaporconditions yapılandırması artırılacağından, oluşturulan XML belgesi bu en yüksek derinliği aşmış olabilir.
Çözüm
Bu sorun, aşağıdaki SQL Server toplu güncelleştirmesinde giderilmiştir:
SQL Server 2016 RTM için toplu güncelleştirme 5
SQL Server 2016 SP1 için toplu güncelleştirme 2
SQL Server 2014 SP2 için toplu güncelleştirme 4
SQL Server 2014 SP1 için toplu güncelleştirme 10
SQL Server için toplu güncelleştirmeler hakkında
Her bir SQL Server toplu güncelleştirmesi, önceki toplu güncelleştirmeyle birlikte gelen tüm düzeltmeleri ve tüm güvenlik düzeltmelerini içerir. En son SQL Server güncelleştirmelerini gözden geçirin:
Durum
Microsoft bu sorunun "Aşağıdakilere Uygulanır" bölümünde listelenen Microsoft ürünlerinde bulunduğunu onaylamıştır.
Ek Bilgi
Bu düzeltme, ara XML belgesinin oluşturulma biçimini değiştirir; böylece her ek veya koşul önceki veya XML öğesinde iç içe olmaz. Bu nedenle, Maxrolaporconditions değerini 256 ile artırabilirsiniz. Bununla birlikte, kullanılabilecek veya koşulların sayısında pratik sınırlamalar vardır. VEYA koşulların sayısı arttıkça, oluşturulan SQL deyiminin karmaşıklığı ilişkisel veritabanı sunucusunun kapasitesini aşabilecek ve yeni hata koşullarına neden olabilir. Aşağıda, yeni hatalara neden olabilen koşullar örnekleri verilmiştir:
-
Bir ekstredeki maksimum parametre sayısını aşma
-
WHERE yan tümcesinde en fazla koşul sayısını aşma
-
SQL sorgu dizesini Ayrıştırmada hatalar
-
SQL sorgu dizesinin boyut üst sınırını aşma
Bu nedenle, Maxrolaporconditions yapılandırma değerindeki tüm ayarlamaları dikkatle yapılmalıdır.
Başvurular
Microsoft 'un yazılım güncelleştirmelerini açıklamak için kullandığı terminoloji hakkında bilgi edinin.