Oprava: Chybová zpráva při spuštění "LINQ k entity" dotaz, který používá parametr řetězce nebo binární parametr proti databázi SQL Server Compact 3.5: "datové typy ntext a image nelze použít v WHERE, s, Seskupit podle, v nebo IN...

Chyba č: 99150 (Údržba obsahu)Chyba #: 50003448 (SQL Hotfix)

Souhrn

Tento článek popisuje následující o tomto vydání oprav hotfix:

  • Problémy opravené balíčkem oprav hotfix

  • Požadavky pro instalaci balíčku oprav hotfix

  • Zda musí restartování počítače po instalaci balíčku oprav hotfix

  • Zda je balíček opravy hotfix nahrazuje jiným balíčkem oprav hotfix

  • Zda je nutné provést jakékoli změny registru

  • Soubory, které jsou obsaženy v balíčku oprav hotfix

Příznaky

Zvažte následující scénář. Aplikace používá Microsoft ADO.NET Entity Framework, který je součástí Microsoft.NET Framework 3.5 Service Pack 1 pro přístup k databázi Microsoft SQL Server Compact 3.5. V aplikaci spustíte "LINQ k entity" dotaz, který používá parametr řetězce nebo binární parametr neexistuje v databázi. V tomto scénáři obdržíte následující chybová zpráva při spuštění aplikace:

Datové typy ntext a image nelze použít v kde, HAVING, GROUP BY, v nebo v klauzulích, kromě případů, kdy tyto datové typy použity s PODOBNĚ nebo NULL predikáty.

Příčina

Při použití parametrů pro dotaz "LINQ k entity" v aplikaci nelze zadat typy základní databáze. Zprostředkovatele SQL Server Compact Entity Framework pokusí vytvořit založený na Entity Data Model (EDM) charakteristiky původní parametru parametr zprostředkovatele úroveň. SQL Server Compact nepodporuje typ dat nvarchar(max) nebo varbinary(max) datového typu. Proto pokud zprostředkovatel vybere typ dat pro parametr typ dat Edm.String nebo typ dat Edm.Binary , zprostředkovatele má parametr označit jako jeden z následujících typů dat založené na modelu EDM fasetami parametru:

  • Pro parametr řetězce zprostředkovatele vybere typ dat nvarchar(4000) nebo typ dat ntext .

  • Pro binární parametr zprostředkovatele vybere typ dat varbinary(4000) nebo typ dat Obrázek .

Pokud zprostředkovatel označí jako typ dat nvarchar(4000) nebo typ dat varbinary(4000) parametr, dojde k chybě při pokusu o vložení hodnoty, které jsou větší než 8 000 bajtů. Navíc pokud zprostředkovatel označí parametr jako typ dat ntext nebo image datový typ, dojde k chybě, pokud všechny operace rovnosti, operace seskupení nebo operace řazení jsou prováděny na parametru.

Řešení

Informace o opravě hotfix

Společnost Microsoft má k dispozici podporovanou opravu hotfix. Tato oprava hotfix je však určena pouze problému popsanému v tomto článku. Tuto opravu hotfix instalujte pouze do systémů, ve kterých dochází k potížím popsaným v tomto článku. Tato oprava hotfix může být dále testována. Proto pokud nejste vážně ohrožen tímto problémem, doporučujeme počkat na další aktualizaci softwaru, která obsahuje tuto opravu hotfix.

Pokud je oprava hotfix k dispozici ke stažení, je v horní části tohoto článku znalostní báze Knowledge Base oddíl "Oprava Hotfix je dostupná ke stažení" . Pokud tato sekce není uvedena, obraťte se na Zákaznický servis a podporu společnosti Microsoft k získaní opravy hotfix.

Poznámka: Pokud nastanou další problémy nebo bude nutné další řešení potíží, bude možná třeba vytvořit další samostatný požadavek na služby. Běžná cena za technickou podporu se vztahuje k dodatečným otázkám podpory a k problémům, které se netýkají této konkrétní opravy hotfix. Úplný seznam telefonních čísel služeb zákazníkům společnosti Microsoft a podpoře nebo vytvořit zvláštní požadavek na službu naleznete na následujícím webu společnosti Microsoft:

http://support.microsoft.com/contactus/?ws=supportPoznámka: Ve formuláři „Oprava hotfix je dostupná ke stažení“ se zobrazují jazyky, pro které je oprava hotfix k dispozici. Pokud váš jazyk není zobrazen, to je protože oprava hotfix není k dispozici pro daný jazyk.

Předpoklady

Chcete-li nainstalovat tuto opravu hotfix, je nutné odinstalovat dříve nainstalovaný SQL Server Compact 3.5 Service Pack 1 instalaci soubor MSI, který je poskytován s této opravy hotfix. Pokud neodinstalujete dříve nainstalovaný SQL Server Compact 3.5 Service Pack 1, zobrazí instalační chybovou zprávu, která uvádí, že je již nainstalována novější verze aplikace SQL Server Compact. Další informace o SQL Server Compact 3.5 Service Pack 1 získáte v následujícím článku znalostní báze Microsoft Knowledge Base:

Popis 955965 SQL Server Compact 3.5 Service Pack 1

Informace o restartování počítače

Po instalaci této opravy hotfix nemusíte restartovat počítač.

Informace o registrech

Není nutné změnit registr.

Informace o souborech opravy hotfix

Tato oprava hotfix obsahuje pouze soubory, které jsou nutné k opravě problémů uvedených v tomto článku jsou uvedeny. Tato oprava hotfix nemusí obsahovat všechny soubory nutné k plné aktualizaci produktu na nejnovější verzi.

Anglická verze této opravy hotfix má atributy (nebo pozdější atributy souborů) uvedené v následující tabulce. Kalendářní data a časy jednotlivých souborů jsou uvedeny v koordinovaném světovém čase (UTC). Při zobrazení informací o souboru je převeden na místní čas. Rozdíl mezi místním časem a časem UTC naleznete na kartě Časové pásmo v položce Datum a čas v okně Ovládací panely.

Název souboru

Verze souboru

Velikost souboru

Datum

Čas

Platforma

System.data.sqlserverce.entity.dll

3.5.5692.1

230,480

24-Sep-2008

06:46

x86/x64/IA-64

System.data.sqlserverce.dll

3.5.5692.1

271,440

24-Sep-2008

06:46

x86/x64

Policy.3.5.system.data.sqlserverce.dll

3.5.5692.1

13,392

24-Sep-2008

06:46

x86/x64

Policy.3.5.system.data.sqlserverce.entity.dll

3.5.5692.1

13,392

24-Sep-2008

06:46

x86/x64

Sqlceca35.dll

3.5.5692.1

343,104

24-Sep-2008

08:07

x86

Sqlcecompact35.dll

3.5.5692.1

84,544

24-Sep-2008

08:07

x86

Sqlceer35en.dll

3.5.5692.1

148,032

24-Sep-2008

08:07

x86

Sqlceme35.dll

3.5.5692.1

65,088

24-Sep-2008

08:07

x86

Sqlceoledb35.dll

3.5.5692.1

172,608

24-Sep-2008

08:07

x86

Sqlceqp35.dll

3.5.5692.1

644,160

24-Sep-2008

08:07

x86

Sqlcese35.dll

3.5.5692.1

348,224

24-Sep-2008

08:07

x86

Pokud není tato oprava hotfix k volnému stahování (tj. v článku není uvedena veřejná adresa URL opravy hotfix), vyžaduje její distribuce technickým vedoucím, členem týmu a vedoucím přičemž následující předpoklady:

  • Opravu hotfix mohou získat zákazníci se vyskytla chyba, která je uvedena v části "Příznaky".

  • Musí sledovat zákazníci Chcete-li odeslat a dodat v další aktualizaci service Pack, až bude k dispozici (Pokud bude vydána aktualizace service pack).

Tato oprava hotfix oprava bude zahrnuta v budoucí opravy hotfix a aktualizace service Pack pro SQL Server Compact 3.5 Service Pack 1.

Části "Řešení" je uvedeno, zda je tato oprava hotfix je k dispozici jako oprava hotfix nebo v nejnovější aktualizaci service pack. Pro účely porovnání a testování je původní oprava hotfix k dispozici na webu http://hotfix .

Poznámka: na pracovníka technické podpory: 3.5.5692.1 sestavení získáte na následujícím webu společnosti Microsoft:

http://hotfix

Do pole Hledání KB zadejte 958478a potom klepněte na tlačítko Přejít.

Stav

Společnost Microsoft potvrdila, že se jedná o problém v produktech společnosti Microsoft, které jsou uvedeny v části "Platí pro".

Další informace

Po instalaci této opravy hotfix, zprostředkovatel uhodnout není datový typ pro parametr EDM. Řetězec datový typ nebo EDM. Binární datového typu. Procesoru dotaz vybere správný datový typ pro parametr založené na hodnotě nebo na sloupce, pro které je odpovídající parametr nebo parametr se používá.

Například v následujícím dotazu Entity SQL procesoru dotaz vybere typ dat ntext pro parametr názvu před instalací této opravy hotfix.

String name = "XYZ";var q = from e in nwind.Employees
where e.First_Name = name
select e;

Po instalaci této opravy hotfix, je vybrána křestní_jméno sloupec datový typ pro parametr name .

Však v následujícím příkladu "LINQ k Entity" dotaz se nezdaří, protože parametr názvu odpovídající ani použít jiné hodnoty nebo sloupec.

String name = "XYZ";var q = from e in nwind.Employees
select name;

Tato oprava hotfix také řeší známý problém, který je popsán v dokumentu readme pro SQL Server Compact 3.5. Další informace naleznete v části "SQL Server Compact 3.5 SP1 Runtime problémy pro the ADO.NET Entity Framework" z následujícího webu společnosti Microsoft:

http://download.microsoft.com/download/2/e/c/2ec70436-aef2-4ccb-93a3-ea2f3e20f77d/ReadmeSSC35.htmTato oprava hotfix řeší problém, který souvisí s nesprávné příkazy Transact-SQL, které jsou generovány při zprostředkovatel převede skalární poddotazy použít konstrukce.

Poznámka: Poddotazy wolframovým jsou převedeny na skalární poddotazy interně. Poddotazy wolframovým nejsou podporovány v této verzi. Při spuštění těchto dotazů, zobrazí následující chybová zpráva:

Došlo k chybě při provádění definici příkazu. Naleznete u vnitřní výjimky.

Vnitřní výjimka obsahuje následující zpráva:

Došlo k chybě při zpracovávání dotazu. [.., Token chyby = AS]

Důvodem je, že rozhraní ADO.NET Entity Framework interpretuje vstupní dotaz jako dotaz, který má typ použít křížové spojení nebo typ použít vnější spojení. Pokud k pravému okraji podmínku spojení vrací skalární hodnotu, spojení je převést na skalární poddotazu. Zprostředkovatel rozhraní ADO.NET Entity Framework pro SQL Server Compact je ekvivalentní dotaz, který má typ použít vnější spojení, který je podporován SQL Server Compact převést tento poddotaz skalární. Nicméně v tomto vydání tento převod neprovádí správně. Například dojde k chybě pro následující dotaz v této verzi.

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());
}
}

Další informace o schéma názvů pro aktualizace serveru SQL Server klepněte na následující číslo článku databáze Microsoft Knowledge Base:

822499 nové schéma přidělování názvů pro Microsoft SQL Server software balíčky aktualizací.

Pro další informace o terminologii používané v aktualizacích softwaru, klepněte na následující číslo článku k zobrazení článku v databázi Microsoft Knowledge Base:

824684 Popis standardní terminologie používané při popisu aktualizací softwaru společnosti Microsoft

Informace v zásobníku volání

   at System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior)
at System.Data.Objects.Internal.ObjectQueryExecutionPlan.Execute[TResultType](ObjectContext context, ObjectParameterCollection parameterValues)
at System.Data.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption)
at System.Data.Objects.ObjectQuery`1.System.Collections.Generic.IEnumerable<T>.GetEnumerator()
at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)
at System.Data.Objects.ELinq.ObjectQueryProvider.<GetElementFunction>b__1[TResult](IEnumerable`1 sequence)
at System.Data.Objects.ELinq.ObjectQueryProvider.ExecuteSingle[TResult](IEnumerable`1 query, Expression queryRoot)
at System.Data.Objects.ELinq.ObjectQueryProvider.System.Linq.IQueryProvider.Execute(Expression expression)
at System.Linq.Queryable.FirstOrDefault[TSource](IQueryable`1 source, Expression`1 predicate)


Autor: bruceye; rtandon
Zapisovatel: ericzha
Odborný recenzent: Kennethr; abidkhan; rtandon; vamshikb
Redaktor: v-andmck

Potřebujete další pomoc?

Rozšiřte své znalosti a dovednosti
Projít školení
Získejte nové funkce jako první
Připojit se k programu Microsoft Insider

Byly tyto informace užitečné?

Děkujeme za váš názor!

Děkujeme vám za váš názor! Pravděpodobně bude užitečné, když vás spojíme s některým z našich agentů podpory Office.

×