Oprava: Chybová zpráva při spuštění dotazu "LINQ k entity" používá parametr řetězce nebo binární parametr proti databáze SQL Server Compact 3.5: "typy dat ntext a image nelze použít v WHERE, HAVING, GROUP BY, ON nebo klauzule IN"

Překlady článku Překlady článku
ID článku: 958478 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Souhrn

Tento článek popisuje následující o tomto vydání opravy hotfix:
  • Problémy opravené balíčkem oprav hotfix
  • požadavky pro instalaci balíčku oprav hotfix,
  • zda je nutné restartování počítače po instalaci balíčku oprav hotfix,
  • nahrazení balíčku oprav hotfix jiným balíčkem oprav hotfix
  • zda je nutné provedení změn v registru,
  • soubory obsažené v balíčku oprav hotfix

Příznaky

Předpokládejme následující situaci. 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 Compact 3.5 Microsoft SQL Server. V aplikaci spusťte "LINQ k entity" dotaz, který používá parametr řetězce nebo binární parametr oproti databázi. V této situaci zobrazí chybová zpráva při spuštění aplikace:
Datové typy ntext a image nelze použít v WHERE, HAVING, GROUP BY, ON nebo IN klauzulí, kromě případů, kdy jsou tyto datové typy použity s LIKE nebo IS 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 na základě modelu dat entity (EDM) charakteristiky původní parametr parametr zprostředkovatele úroveň. SQL Server Compact nepodporuje datový typ nvarchar(max) nebo typ dat varbinary(max). 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 na základě charakteristiky EDM parametr:
  • Pro parametr řetězce zprostředkovatele vybere typ dat nvarchar(4000) nebo typ dat ntext.
  • Pro parametr binární zprostředkovatele vybere typ dat varbinary(4000) nebo typ dat obrázek.
Pokud zprostředkovatel označí jako typ dat nvarchar(4000) nebo jako 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 jako typ dat obrázku, dojde k chybě Pokud rovnosti operace, operace seskupení nebo řazení operací je jsou prováděny na parametr.

Řešení

Informace o opravě hotfix

K dispozici je podporovaná oprava hotfix od společnosti Microsoft. Tato oprava hotfix je však určena pouze k opravě 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. Pokud Vás tento problém závažně nepostihuje, doporučujeme počkat na další aktualizaci softwaru, která bude tuto opravu hotfix obsahovat.

Pokud je oprava hotfix k dispozici ke stažení, v horní části tohoto článku je sekce "Hotfix stažení k dispozici". Pokud tento oddíl nevidíte, obraťte se na Technickou podpora společnosti Microsoft pro získání opravy hotfix.

Poznámka: Pokud vyskytnout další problémy nebo jakékoli řešení potíží je vyžadován, pravděpodobně budete muset vytvořit zvláštní požadavek na službu. Výdaje na technickou podporu se týkají dalších otázek a problémů, které nelze vyřešit pomocí této opravy konkrétní opravy hotfix. Navštivte následující web společnosti Microsoft pro získání telefonního čísla na Zákaznické centrum, nebo pokud chcete vytvořit samostatnou žádost o podporu:
http://support.microsoft.com/contactus/?ws=support
Poznámka: Zobrazí formulář "Hotfix stažení k dispozici" jazyky, pro které je oprava hotfix k dispozici. Pokud váš jazyk není zobrazen, oprava hotfix není k dispozici pro daný jazyk.

Požadavky

Chcete-li použít tuto opravu hotfix, musíte odinstalovat dříve nainstalovaný SQL Server Compact 3.5 Service Pack 1 instalaci soubor MSI je poskytován s této opravy hotfix. Pokud odinstalujete dříve nainstalovaný SQL Server Compact 3.5 Service Pack 1, zobrazí se chybová zpráva instalace oznamující, že je již nainstalována novější verze produktu SQL Server komprimovat. Další informace o SQL Server Compact 3.5 Service Pack 1 klepněte na následující číslo článku databáze Microsoft Knowledge Base:
955965Komprimovat Popis SQL Server 3.5 Service Pack 1

Informace o restartování

Po instalaci této opravy hotfix není třeba počítač restartovat.

Informace o registru

Nemáte změna registru.

Informace o souboru opravy hotfix

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

Anglická verze této opravy hotfix má následující (nebo pozdější) atributy souborů. Data a časy jednotlivých souborů jsou uvedeny ve formátu UTC (Coordinated Universal Time). Pokud zobrazíte informace o souboru, bude převedena na místní čas. Rozdíl mezi místním ČASEM a najít, použijte kartu časové pásmo v položce datum a čas v ovládacím.
Zmenšit tuto tabulkuRozšířit tuto tabulku
Název souboruVerze souboruVelikost souboruDatumČasPlatforma
System.data.sqlserverce.entity.dll3.5.5692.1230,48024. Září 200806: 46x 86 / 64, IA-64 x
System.data.sqlserverce.dll3.5.5692.1271,44024. Září 200806: 46x 86 / x 64
Policy.3.5.System.data.sqlserverce.dll3.5.5692.113,39224. Září 200806: 46x 86 / x 64
Policy.3.5.System.data.sqlserverce.entity.dll3.5.5692.113,39224. Září 200806: 46x 86 / x 64
Sqlceca35.dll3.5.5692.1343,10424. Září 200808: 07X86
Sqlcecompact35.dll3.5.5692.184,54424. Září 200808: 07X86
Sqlceer35en.dll3.5.5692.1148,03224. Září 200808: 07X86
Sqlceme35.dll3.5.5692.165,08824. Září 200808: 07X86
Sqlceoledb35.dll3.5.5692.1172,60824. Září 200808: 07X86
Sqlceqp35.dll3.5.5692.1644,16024. Září 200808: 07X86
Sqlcese35.dll3.5.5692.1348,22424. Září 200808: 07X86

Prohlášení

Společnost Microsoft potvrzuje, že se jedná o problém v produktech této společnosti, které jsou uvedeny v části Informace v tomto článku jsou určeny pro produkt.

Další informace

Po použití této opravy hotfix není zprostředkovatel uhodnout typ dat pro parametr typ dat EDM.String nebo typ dat EDM.Binary. Procesor dotaz vybere správný datový typ pro parametr založené na hodnotu nebo na sloupec, který parametr equated nebo s kterou parametr použít.

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 použití této opravy hotfix je pro parametr název vybrané typ dat sloupce Příjmení.

Se však v následujícím příkladu "LINQ k entity" dotaz nezdaří, protože parametr názvu je equated k ani použit s libovolnou hodnotu nebo sloupec.
String name = "XYZ";
var q = from e in nwind.Employees
           select name;
Tato oprava hotfix řeší také známý problém popsaný v dokumentu readme pro SQL Server 3.5 komprimovat. 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.htm
Tato oprava hotfix řeší problém související s nesprávné příkazy Transact SQL, které jsou generovány při zprostředkovatele převede skalární poddotazy použít konstrukce.

Poznámka: Korelační poddotazy jsou převedeny na skalární poddotazy interně. Korelační poddotazy nejsou podporovány v této verzi. Tyto dotazy obdržíte následující chybová zpráva:
Při provádění příkazu definice došlo k chybě. Naleznete u vnitřní výjimky.
Vnitřní výjimka obsahuje následující zprávu:
Došlo k chybě, analýza dotazu. [.., Token chyba = AS]
Důvodem je ADO.NET Entity Framework interpretuje jako dotaz, který má typ použít KŘÍŽOVÉ spojení nebo typ spojení OUTER použít vstupní dotazu. Pokud pravé straně podmínku spojení vrací skalární hodnotu, spojení převeden na skalární poddotazu. Zprostředkovatele ADO.NET Entity Framework pro SQL Server Compact má převést, že skalární poddotazu ekvivalentní dotaz, který má typ použít OUTER spojení, který je podporován SQL Server Compact. Však v této verzi tomto převodu se neprovádí správně. K chybě například dochází 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 pojmenování schématu aktualizace SQL Server klepněte na následující číslo článku databáze Microsoft Knowledge Base:
822499Nové schéma přidělování názvů pro balíčky aktualizací softwaru Microsoft SQL Server
Další informace o terminologii používané v aktualizacích softwaru naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:
824684Popis standardní terminologie používané při popisu aktualizací softwaru společnosti Microsoft

Vlastnosti

ID článku: 958478 - Poslední aktualizace: 17. února 2009 - Revize: 1.1
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft SQL Server Compact 3.5
Klíčová slova: 
kbmt kbexpertiseadvanced kbfix kbautohotfix kbsurveynew kbqfe kbhotfixserver KB958478 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:958478

Dejte nám zpětnou vazbu

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com