КОРЕКЦИЯ: Съобщение за грешка, когато изпълнявате заявка "LINQ към лица", която използва низ параметър или двоични параметър в база данни на SQL Server Compact 3.5: "ntext и изображения типове данни не може да се използва когато, като, ГРУПИРАНЕ, върху или IN....

Прилага се за: Microsoft SQL Server Compact 3.5

Резюме


Тази статия описва следното за тази версия на спешна корекция:
  • Проблемите, които са отстранени от пакета с актуални корекции
  • Предварителни изисквания за инсталирането на пакета с актуална корекция
  • Дали трябва да рестартирате компютъра след инсталиране на пакета с актуални корекции
  • Дали пакета с актуални корекции се заменя с друг пакет корекция
  • Дали трябва да се правят промени в системния регистър
  • Файловете, които се съдържат в пакета с актуални корекции

Симптоми


Да разгледаме следния сценарий. Приложението използва обект Microsoft ADO.NET рамка, която е включена в Microsoft .NET Framework 3.5 Service Pack 1 за достъп до база данни на Microsoft SQL Server Compact 3.5. В приложението изпълните заявка "LINQ към лица", която използва низ параметър или двоични параметър в базата данни. При този сценарий получавате следното съобщение за грешка, когато стартирате приложение:
Ntext и изображения типове данни не може да се използва, като, група от, или в клаузи, освен когато тези типове данни се използват с подобни или е NULL предикати.

Причина


Когато използвате параметри за заявката "LINQ към лица" в приложението, не може да задавате типовете основната база данни. Доставчик на SQL Server Compact Framework обект се опитва да създаде доставчик ниво параметър въз основа на субект данни модел (Танцова) аспекти на оригиналната параметър. SQL Server Compact не поддържа типа nvarchar(max) данни или varbinary(max) данни. Затова когато доставчикът избере типа данни за параметър от тип Edm.String данни или Edm.Binary тип данни, доставчикът трябва да маркирате параметър като един от следните типове данни, въз основа на EDM аспекти на параметъра:
  • Параметър низ за доставчик избира nvarchar(4000) тип данни или ntext данни.
  • За двоична параметър доставчикът избира varbinary(4000) тип данни или данни изображение .
Ако доставчикът отбелязва параметъра nvarchar(4000) тип данни или като varbinary(4000) тип данни, възниква грешка при опит за вмъкване на стойности, които са по-големи от 8000 байта. Освен това ако доставчикът отбелязва параметъра ntext тип данни или като изображение тип данни, грешка се появява при всяко равенство операции, групиране операции или сортиране операции се извършват на параметъра.

Решение


Информация за актуалната корекция

Поддържана актуална корекция се предлага от Microsoft. Тази актуална корекция обаче е предназначена да коригира само проблема, описан в тази статия. Прилагайте тази корекция само към системи, изпитващи конкретния проблем, описан в настоящата статия. Може да се проведат допълнителни тестове на тази актуална корекция. Следователно ако не сте силно засегнати от този проблем, препоръчваме да изчакате следващата актуализация на софтуера, който ще съдържа тази корекция.

Ако актуалната корекция е налична за изтегляне, има секция "Налично изтегляне предлага" в горната част на тази статия от базата знания. Ако тази секция не се появява, свържете се с Microsoft за обслужване на клиенти и поддръжка, за да получите актуалната корекция.

Забележка: Ако възникнат допълнителни проблеми или проблеми, трябва да създадете отделна заявка за поддръжка. Обичайните такси за поддръжката ще важат за допълнителни въпроси и проблеми, които не спадат към конкретната актуална корекция. За пълен списък на телефонните номера на Microsoft за обслужване на клиенти и поддръжка или да създадете отделна заявка за поддръжка посетете следния уеб сайт на Microsoft:Забележка: Формулярът "Налична актуална корекция изтегляне" показва езиците, за които е налична актуалната корекция. Ако не виждате вашия език, това е защото актуалната корекция не е налична за този език.

Необходими условия:

За да приложите тази актуална корекция, трябва да деинсталирате инсталирания SQL Server Compact 3.5 Service Pack 1 за инсталиране на .msi файл, който е предоставен с тази актуална корекция. Ако не деинсталирате инсталирания SQL Server Compact 3.5 Service Pack 1, получавате инсталация съобщение за грешка, уведомяващо, че вече е инсталирана по-нова версия на SQL Server Compact. За повече информация за SQL Server Compact 3.5 Service Pack 1, щракнете върху следния номер на статия в базата знания на Microsoft:

955965 описание на SQL Server Compact 3.5 Service Pack 1

Информация за рестартиране

Не трябва да рестартирате компютъра, след като приложите тази актуална корекция.

Информация за системния регистър

Не трябва да промените системния регистър.

Информация относно файл

Тази актуална корекция съдържа само файловете, които са необходими за отстраняване на проблеми, които са изброени в тази статия. Тази актуална корекция може да не съдържа всички файлове, трябва да актуализирате напълно продукта до най-новата компилация.

Англоезичната версия на тази спешна корекция има файлови атрибути (или по-нови файлови атрибути), които са изброени в следващата таблица. Датите и часовете за тези файлове са изброени в координирано световно време (UTC). Когато гледате информацията за файла, преобразувана в местно време. За да намерите разликата между UTC и местното време, използвайте раздела часова зона в елемента " Дата и час " в контролния панел.
Име на файлВерсия на файлаРазмер на файлаДатаВремеПлатформа
System.data.sqlserverce.entity.dll3.5.5692.1230,48024-Sep-200806:46x86/x64/IA-64
System.data.sqlserverce.dll3.5.5692.1271,44024-Sep-200806:46x86/x64
Policy.3.5.system.data.sqlserverce.dll3.5.5692.113,39224-Sep-200806:46x86/x64
Policy.3.5.system.data.sqlserverce.entity.dll3.5.5692.113,39224-Sep-200806:46x86/x64
Sqlceca35.dll3.5.5692.1343,10424-Sep-200808:07x86
Sqlcecompact35.dll3.5.5692.184,54424-Sep-200808:07x86
Sqlceer35en.dll3.5.5692.1148,03224-Sep-200808:07x86
Sqlceme35.dll3.5.5692.165,08824-Sep-200808:07x86
Sqlceoledb35.dll3.5.5692.1172,60824-Sep-200808:07x86
Sqlceqp35.dll3.5.5692.1644,16024-Sep-200808:07x86
Sqlcese35.dll3.5.5692.1348,22424-Sep-200808:07x86

Статус


Microsoft потвърждава, че това е проблем в продуктите на Microsoft, изброени в раздела "Отнася се за".

Допълнителна информация


След като приложите тази актуална корекция, доставчикът не Познай тип данни за параметъра Танцова. Низ тип данни или Танцова. Двоични тип данни. Заявката процесор избира правилния тип данни за стойността или колона, която е разбираем параметър или с който се използва параметърът параметър.

Например в следния обект SQL заявка, заявката процесор избира ntext тип данни за параметъра име , преди да приложите тази актуална корекция.
String name = "XYZ";var q = from e in nwind.Employees
where e.First_Name = name
select e;

След като приложите тази актуална корекция, типът данни на колоната First_Name е избран за име на параметър.

Обаче в следващия пример "LINQ към обект" заявката не успява, защото параметърът name е, равнявала нито използва с друга стойност или колона.
String name = "XYZ";var q = from e in nwind.Employees
select name;

Тази актуална корекция също отстранява известен проблем, описан в документа readme за SQL Server компактен 3.5. За повече информация вижте раздела "SQL Server Compact 3.5 SP1 Runtime проблеми за ADO.NET рамка на обекти" на следния уеб сайт на Microsoft:Тази актуална корекция не реши проблема, е свързана с неправилен Transact-SQL команди, които се генерират, когато доставчикът преобразува скаларни подзаявки да приложите изгражда.

Забележка: Корелация подзаявки се конвертират в скаларни подзаявки вътрешно. Корелация подзаявки не се поддържат в тази версия. Когато изпълнявате тези заявки, получавате следното съобщение за грешка:
Възникна грешка при изпълнение на командата дефиниране. Вижте вътрешното изключение за повече подробности.
Вътрешното съдържа следното съобщение:
Възникна грешка при анализирането на заявката. [.., Маркер грешка = AS]
Причината е, че рамката обект ADO.NET интерпретира въвеждане заявката като заявка, която има различни прилага съединение тип или външно прилага съединение. Ако дясната страна на състоянието на съединение връща стойност, съединение се превръща в скаларни подзаявка. Доставчикът на обект ADO.NET рамка за SQL Server Compact трябва да конвертирате тази скаларни подзаявка еквивалентни заявка, която се прилага външно съединение тип, който се поддържа от SQL Server Compact. Обаче в тази версия, това преобразуване не става правилно. Например възниква грешка за следната заявка в тази версия.
C# Sample Application:using (NorthwindEntities nwEntities = new NorthwindEntities())
{
var orders = nwEntities.Employees
.Select(employee => employee.Orders.Max(order => order.Order_ID));
foreach (var order in orders)
{
Console.WriteLine(order.ToString());
}
}

За повече информация за схемата за именуване на актуализации за SQL Server щракнете върху следния номер на статия в базата знания на Microsoft:

Пакетите за актуализация на 822499 нова схема за именуване софтуер на Microsoft SQL Server

За повече информация относно терминологията за актуализация на софтуера щракнете върху следния номер на статия, за да я видите в базата данни на Microsoft:
824684 описание на стандартната терминология, използвана за описание на софтуерните актуализации на Microsoft