KB3208179 - תיקון: שאילתת MDX מחזירה שגיאות אם הערך של MaxRolapOrConditions גדול מ- 256 ב SQL Server Analysis Services

חל על
SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2016 Service Pack 1 SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use)

סימפטומים

נניח שאתה משתמש במצב אחסון OLAP יחסי (ROLAP) עבור קבוצת מדידים במופע של SQL Server 2014 או 2016 Analysis Services. לאחר הגדרת הערך של המאפיין המתקדם MaxRolapOrConditions ליותר מ- 256, תבצע שאילתות MDX בקבוצת מדידים זו. במקרה זה, תקבל שגיאות הדומות לשגיאות הבאות:

הערה

#Error מנתח DOM לא הצליח לטעון ולנתח את הזרם. URL:'' סיבה: 'הפעולה בוטלה: אילוץ עומק מקסימלי הופר.' מקור:''. מיקום קובץ: 0. שורה: 6.

      

גורם

Analysis Services יוצר מסמך XML פסאודו-SQL, אשר לאחר מכן מנותח באמצעות גליון סגנונות XML כדי ליצור את משפט ה- SQL הסופי שנשלח למקור היחסי. בעת יצירת מסמך XML פנימי ראשוני, תנאי OR עבור עמודה נוצרים כרכיבי XML מקוננים, כמו בדוגמה הבאה:

<OR>
 <Condition>column1 = value1</Condition>
  <OR>
   <Condition>column1 = value2</Condition>
    <OR>
     <Condition>column1 = value3</Condition>
    </OR>
  </OR>
</OR> 

מאפיין MaxElementDepth המהווה ברירת מחדל עבור אובייקט DOM של MSXML המשמש את Analysis Services לבניית מסמך ה- 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 SQL Server מכיל את כל התיקונים החמים ואת כל תיקוני האבטחה שנכללו בעדכון המצטבר הקודם. עיין בעדכונים המצטברים האחרונים עבור SQL Server:

העדכון המצטבר האחרון עבור SQL Server 2016

העדכון המצטבר האחרון עבור SQL Server 2014

מצב

Microsoft אישרה שזוהי בעיה במוצרי Microsoft המפורטים בסעיף "חל על".

מידע נוסף

תיקון זה משנה את האופן שבו מסמך XML מתווך נוצר, כך שכל תנאי OR נוסף אינו מקונן ברכיב הקודם OR XML. לכן, אתה יכול להגדיל את MaxROLAPOrConditions מעבר ל-256. עם זאת, עדיין קיימות מגבלות מעשיות על מספר תנאי OR שניתן להשתמש בהם.

ככל שמספר תנאי OR עולה, המורכבות של משפט SQL שנוצר עלולה לעלות על הקיבולת של שרת מסד הנתונים היחסי ולגרום למצבי שגיאה חדשים.

להלן דוגמאות לתנאים שעלולים לגרום לשגיאות חדשות:

  • חריגה ממספר הפרמטרים המרבי במשפט
  • חריגה מהמספר המרבי של תנאים בפסוקית WHERE
  • שגיאות בניתוח מחרוזת השאילתה של SQL
  • חריגה מהגודל המרבי של מחרוזת שאילתת SQL

לכן, אנו ממליצים לבצע בזהירות את כל ההתאמות לערך התצורה MaxROLAPOrConditions.

חומרי עזר

קבל מידע נוסף על המינוח שבו משתמשת Microsoft כדי לתאר עדכוני תוכנה.