مؤشرات الخطأ
اطّلع على السيناريو التالي:
-
لديك كمبيوتر تم تثبيت Microsoft SQL Server 2012 عليه.
-
لديك استعلام يحتوي علي جمله case في جمله SELECT وجمله case في جمله GROUP BY .
-
يتم تقييم العبارتين CASE إلى قيمه خاليه.
-
تقوم بتشغيل الاستعلام.
في هذا السيناريو ، تتلقي رسالة الخطا التالية:
الرسالة 8120 ، المستوي 16 ، الحالة 1 ، السطر 3 العمود ' <اسم العمود> ' غير صالح في قائمه select لأنه غير مضمن في الدالة aggregate أو جمله 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 (col1) else 10» إلى 10. عند استبدال "10" باستخدام NULL ، تحدث هذه المشكلة.ملاحظه لا تحدث هذه المشكلة عند أزاله اي من عبارات CASE من جمله select أو من جمله GROUP BY .
الحل
بعد تطبيق الإصلاح ، يجب تمكين علامة تتبع لجعل الإصلاح العاجل يعمل. يرجى الاتصال بدعم Microsoft عندما تحتاج إلى تطبيق هذا الإصلاح.
تم تصحيح المشكلة أولا في التحديث التراكمي التالي ل SQL Server.
تحديث تراكمي 6 ل SQL Server 2012 SP1 /en-us/help/2874879
يحتوي كل تحديث تراكمي جديد ل SQL Server علي كل الإصلاحات العاجلة وكل تصحيحات الأمان التي تم تضمينها في التحديث التراكمي السابق. اطلع علي آخر التحديثات التراكمية ل SQL Server:
الحالة
أقرت Microsoft أن هذه المشكلة تحدث في منتجات Microsoft المسردة في المقطع "تنطبق على".