Συμπτώματα
Ας υποθέσουμε ότι χρησιμοποιείτε τη λειτουργία αποθήκευσης σχεσιακής OLAP (ROLAP) για μια ομάδα μέτρησης σε μια παρουσία των υπηρεσιών ανάλυσης του SQL Server 2014 ή του 2016. Αφού καθορίσετε την τιμή της ιδιότητας Advanced MaxRolapOrConditions σε περισσότερες από 256, εκτελείτε ερωτήματα MDX σε αυτήν την ομάδα μέτρησης. Σε αυτήν την περίπτωση, λαμβάνετε σφάλματα που μοιάζουν με τα εξής:
#Error το πρόγραμμα ανάλυσης DOM απέτυχε να φορτώσει και να αναλύσει τη ροή. Διεύθυνση URL: "αιτία:" η λειτουργία ματαιώθηκε: παραβίασε τον περιορισμό "Μέγιστος-στοιχείο-βάθους". Προέλευση: ' '. Θέση αρχείου: 0. Line: 6.
Αιτία
Οι υπηρεσίες ανάλυσης δημιουργούν ένα έγγραφο XML ψευδο-SQL, το οποίο στη συνέχεια αναλύεται μέσω ενός φύλλου στυλ XML για να δημιουργήσει την τελική πρόταση SQL που αποστέλλεται στη σχεσιακή προέλευση. Κατά τη δημιουργία του αρχικού εσωτερικού εγγράφου XML ή οι συνθήκες για μια στήλη δημιουργούνται ως ένθετα στοιχεία XML, όπως στο ακόλουθο παράδειγμα:
<OR> <Condition>column1 = value1</Condition> <OR> <Condition>column1 = value2</Condition> <OR> <Condition>column1 = value3</Condition> </OR> </OR></OR>
Η προεπιλεγμένη ιδιότητα MaxElementDepth για ένα αντικείμενο MSXML DOM που χρησιμοποιείται από τις υπηρεσίες ανάλυσης για τη δημιουργία του εγγράφου XML είναι η 256 στο MSXML 6.0. Επομένως, όταν αυξάνεται η ρύθμιση παραμέτρων του MaxROLAPOrConditions , το παραγόμενο έγγραφο XML μπορεί να υπερβεί αυτό το μέγιστο βάθος.
Επίλυση
Αυτό το πρόβλημα διορθώνεται με την ακόλουθη αθροιστική ενημέρωση για τον SQL Server:
Αθροιστική ενημερωμένη έκδοση 5 για SQL Server 2016 RTM
Αθροιστική ενημερωμένη έκδοση 2 για τον SQL Server 2016 SP1
Αθροιστική ενημερωμένη έκδοση 4 για τον SQL Server 2014 SP2
Αθροιστική ενημερωμένη έκδοση 10 για τον SQL Server 2014 SP1
Πληροφορίες για τις αθροιστικές ενημερώσεις για τον SQL Server
Κάθε νέα αθροιστική ενημέρωση για τον SQL Server περιέχει όλες τις επείγουσες επιδιορθώσεις και όλες τις επιδιορθώσεις ασφαλείας που συμπεριλήφθηκαν στην προηγούμενη αθροιστική ενημέρωση. Ανάληψη ελέγχου των πιο πρόσφατων αθροιστικών ενημερώσεων για τον SQL Server:
Κατάσταση
Η Microsoft έχει επιβεβαιώσει ότι πρόκειται για ένα πρόβλημα στα προϊόντα της Microsoft που παρατίθενται στην ενότητα "ισχύει για".
Περισσότερες πληροφορίες
Αυτή η επιδιόρθωση αλλάζει τον τρόπο δημιουργίας του ενδιάμεσου εγγράφου XML, έτσι ώστε κάθε πρόσθετο ή Συνθήκη να μην είναι ένθετο στο στοιχείο προγενέστερο ή XML. Επομένως, θα μπορούσατε να αυξήσετε το MaxROLAPOrConditions πέρα από το 256. Ωστόσο, εξακολουθούν να υπάρχουν πρακτικοί περιορισμοί στον αριθμό ή τις συνθήκες που μπορούν να χρησιμοποιηθούν. Καθώς αυξάνεται ο αριθμός ή οι συνθήκες, η πολυπλοκότητα της πρότασης SQL που δημιουργείται μπορεί να υπερβεί τη χωρητικότητα του διακομιστή σχεσιακής βάσης δεδομένων, προκαλώντας νέες συνθήκες σφάλματος. Ακολουθούν παραδείγματα συνθηκών που μπορεί να προκαλέσουν νέα σφάλματα:
-
Υπέρβαση του μέγιστου αριθμού παραμέτρων σε μια πρόταση
-
Υπέρβαση του μέγιστου αριθμού συνθηκών σε έναν όρο WHERE
-
Σφάλματα κατά την ανάλυση της συμβολοσειράς ερωτήματος SQL
-
Υπέρβαση του μέγιστου μεγέθους μιας συμβολοσειράς ερωτήματος SQL
Επομένως, συνιστούμε οι τυχόν προσαρμογές στην τιμή ρύθμισης παραμέτρων του MaxROLAPOrConditions να γίνονται με προσοχή.
Αναφορές
Μάθετε σχετικά με την ορολογία που χρησιμοποιεί η Microsoft για την περιγραφή ενημερώσεων λογισμικού.