תופעות
שקול את התרחיש הבא:
-
יש לך מחשב שבו מותקן Microsoft SQL Server 2012.
-
יש לך שאילתה המכילה משפט רישיות במשפט select ומשפט רישיות במשפט GROUP BY .
-
שני משפטי המשפט מוערכים כ-NULL.
-
אתה מפעיל את השאילתה.
בתרחיש זה, אתה מקבל את הודעת השגיאה הבאה:
מונוסודיום גלוטמט 8120, Level 16, State 1, Line 3Column ' <column name> ' אינו חוקי ברשימה בחר מכיוון שהוא אינו נכלל בפונקציית צבירה או במשפט GROUP by.
לדוגמה, אתה מפעיל את השאילתה הבאה:create database testgouse testgocreate table tvt ( v1t binary(1) null)create table tln (ln numeric(5) not null)goselectcase when 1=2 then t1.col1else 10end,casewhen t1.col1 = 2 then t1.col2endfrom (select t2.v1t as col1, 10 as col2 from tvt t2) t1group by case when 1=2 then t1.col1else 10end,casewhen t1.col1 = 2 then t1.col2endgo בשאילתה, המשפט "כאשר 1 = 2 ולאחר מכן t1. עמודה 1 אחר 10" מוערך ל-10. בעת החלפת "10" באמצעות NULL, בעיה זו מתרחשת.הערה בעיה זו אינה מתרחשת בעת הסרת אחד ממשפטי הרישיות ממשפט select או ממשפט GROUP BY .
פתרון
לאחר החלת התיקון, עליך להפוך דגל מעקב לזמין כדי לגרום לתיקון החם לפעול. נא פנה לתמיכה של Microsoft כאשר עליך להחיל תיקון זה.
הבעיה נפתרה לראשונה בעדכון המצטבר הבא של SQL Server.
עדכון מצטבר 6 עבור SQL Server 2012 SP1 /en-us/help/2874879
כל עדכון מצטבר חדש עבור SQL Server מכיל את כל התיקונים החמים ואת כל תיקוני האבטחה שנכללו בעדכון המצטבר הקודם. עיין בעדכונים המצטברים האחרונים עבור SQL Server:
מצב
Microsoft אישרה שזוהי בעיה במוצרי Microsoft המופיעים בסעיף "חל על".