Симптоми
Обмислете следния сценарий:
-
Имате компютър, на който е инсталиран Microsoft SQL Server 2012.
-
Имате заявка, която съдържа инструкция за дело в команда Select и декларация за конкретен случай в група по декларация.
-
Двете изявления на случая се изчисляват като невалидни.
-
Изпълнявате заявката.
В този случай получавате следното съобщение за грешка:
MSG 8120, Level 16, State 1, Line 3Column "<име на колона>" е невалидно в списъка за избиране, тъй като не се съдържа нито в обединена функция, нито по КЛАУЗАТА 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 else 10" се изчислява на 10. Когато заместите "10", като използвате NULL, този проблем възниква.Забележка Този проблем не възниква, когато премахнете нито един от отчетите за случаи от командата Select или от групата по декларация.
Решение
След като приложите корекцията, трябва да разрешите проследяващо знаме, за да се направи актуалната корекция. Моля, свържете се с поддръжката на Microsoft, когато трябва да приложите тази корекция.
Проблемът е коригиран първо в следващата сборна актуализация на SQL Server.
Кумулативна актуализация 6 за SQL Server 2012 SP1 /en-us/help/2874879
Всяка нова сборна актуализация за SQL Server съдържа всички поправки и всички корекции на защитата, които са били включени в предишната сборна актуализация. Вижте последните сборни актуализации за SQL Server:
Състоянието
Microsoft потвърди, че това е проблем в продуктите на Microsoft, които са посочени в секцията "важи за".