FIX: Chybové hlásenie pri spustení "LINQ na subjekty" dotaz, ktorý používa parameter reťazec alebo binárne parameter databázou SQL Server Compact 3.5: "typy údajov ntext a obraz sa nemôže používať, ak so, zoskupenie, na alebo...

BUG #: 99150 (údržby)BUG #: 50003448 (rýchla oprava SQL)

Súhrn

Tento článok popisuje nasledovné o vydaní tejto rýchlej opravy:

  • Problémy, ktoré odstraňuje balík rýchlej opravy

  • Požiadavky na inštaláciu opravy hotfix

  • Či musíte reštartovať počítač po nainštalovaní balíka rýchlej opravy

  • Či opravy hotfix nahrádza inou opravou hotfix

  • Či je potrebné vykonať zmeny v databáze registry

  • Súbory, ktoré sú obsiahnuté v balíku

Príznaky

Predstavte si nasledujúcu situáciu. Aplikácia používa Microsoft ADO.NET Entity Framework, ktorý je súčasťou rozhrania Microsoft .NET Framework 3.5 Service Pack 1 získať prístup k databáze Microsoft SQL Server Compact 3.5. V aplikácii spustení "LINQ na subjekty" dotaz, ktorý používa parameter reťazec alebo binárne parameter databázou. V tomto prípade sa zobrazí chybové hlásenie pri pokuse o spustenie aplikácie:

Typy údajov ntext a obraz nie je možné použiť, so, skupiny, na alebo klauzuly, okrem prípadu, keď sa ako sa používajú tieto typy údajov alebo je NULL predikáty.

Príčina

Pri použití parametrov "LINQ na subjekty" dotaz aplikácie, nemôžete zadať typy základnej databázy. SQL Server Compact Entity Framework poskytovateľ sa pokúša vytvoriť parameter poskytovateľa úrovni na základe Entity Data Model (EDM) aspekty pôvodný parameter. SQL Server Compact nepodporuje typ údajov nvarchar(max) alebo typ údajov varbinary(max) . Preto ak poskytovateľ vyberie typ údajov pre parameter Edm.String údajový typ alebo Edm.Binary typ údajov, poskytovateľ má označenie parameter ako jeden z nasledovných typov údajov na základe EDM aspekty parameter:

  • Parametra poskytovateľ vyberie typ údajov nvarchar(4000) alebo obsahujúce oddelenú typ údajov.

  • Binárne parameter, poskytovateľ vyberie typ údajov varbinary(4000) alebo typom údajov obrázok .

Ak poskytovateľ označí parameter nvarchar(4000) údajový typ alebo varbinary(4000) typ údajov, chyba sa vyskytuje, keď sa pokúsite vložiť hodnoty, ktoré sú väčšie ako 8000 bajtov. Okrem toho ak poskytovateľ označí parameter typ údajov ntext alebo typ údajov obrázok , chyba Ak všetky rovnosti operácie, operácie zoskupenie alebo zoradenie operácií sa vykonáva na parameter.

Riešenie

Informácie o rýchlej oprave

Od spoločnosti Microsoft je k dispozícii podporovaná rýchla oprava. Táto rýchla oprava je však určená iba opravu problému, ktorý je popísaný v tomto článku. Rýchlu opravu použite len v systémoch, v ktorých sa vyskytuje problém popísaný v tomto článku. Táto rýchla oprava môže byť ďalej testovaná. Ak nie ste výrazne ovplyvnení týmto problémom, odporúčame vám počkať na ďalšiu aktualizáciu softvéru, ktorá bude obsahovať túto rýchlu opravu.

Ak je rýchla oprava k dispozícii na stiahnutie, na začiatku tohto článku databázy Knowledge Base sa nachádza časť „K díspozícii je rýchla oprava na stiahnutie“. Ak sa táto časť nezobrazuje, obráťte sa na oddelenie služieb zákazníkom a technickej podpory spoločnosti Microsoft a požiadajte o poskytnutie tejto rýchlej opravy.

Poznámka: Ak sa vyskytnú ďalšie problémy alebo ak je potrebné riešiť problémy, je možné, že budete musieť vytvoriť samostatnú servisnú požiadavku. Na ďalšie žiadosti o podporu a problémy, ktoré sa netýkajú tejto konkrétnej rýchlej opravy, sa vzťahujú zvyčajné poplatky za poskytnutie technickej podpory. Úplný zoznam telefónnych čísel služieb zákazníkom spoločnosti Microsoft a podpora alebo vytvoriť samostatnú servisnú požiadavku, nájdete na webovej lokalite spoločnosti Microsoft:

http://support.microsoft.com/contactus/?ws=supportPoznámka: Formulár "Prevzatie dostupnej rýchlej opravy" sa zobrazuje pre jazyky, pre ktoré je rýchla oprava k dispozícii. Ak nemôžete nájsť požadovaný jazyk, znamená to, že rýchla oprava nie je pre tento jazyk k dispozícii.

Požiadavky

Ak chcete použiť túto rýchlu opravu, musíte odinštalovať predtým nainštalovaný SQL Server Compact 3.5 Service Pack 1 nainštalovať súbor .msi, ktorý je k dispozícii s túto rýchlu opravu. Ak sa nedá odinštalovať predtým nainštalovaný SQL Server Compact 3.5 Service Pack 1, sa zobrazí chybové hlásenie, ktoré informuje, že novšiu verziu SQL Server Compact je už nainštalovaný. Ďalšie informácie o SQL Server Compact 3.5 Service Pack 1 získate po kliknutí na nasledovné číslo článku publikovaného v databáze Microsoft Knowledge Base:

Popis 955965 SQL Server Compact 3.5 Service Pack 1

Informácie o reštartovaní

Po použití tejto rýchlej opravy nie je potrebné reštartovať počítač.

Informácie o databáze Registry

Nemáte zmeniť databázu registry.

Informácie o reštartovaní

Táto rýchla oprava obsahuje iba súbory, ktoré sú potrebné na odstránenie problémov, ktoré sú uvedené v tomto článku. Táto rýchla oprava môže nie obsahovať všetky súbory, ktoré sú potrebné na úplnú aktualizáciu produktu na najnovšiu verziu.

Anglická verzia tejto rýchlej opravy má atribúty súborov (alebo novšie atribúty) uvedené v nasledujúcej tabuľke. Dátumy a čas jednotlivých súborov sú uvedené vo formáte koordinovaného svetového času (UTC). Pri zobrazení informácií o súbore sa dátumy a čas prevedú na miestny čas. Ak chcete vyhľadať rozdiely medzi časom UTC a miestnym časom, použite kartu Časové pásmo v položke Dátum a čas v ovládacom paneli.

Názov súboru

Verzia súboru

Veľkosť súboru

Dátum

Č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

Ak táto rýchla oprava nie je verejne prístupná na prevzatie (čo znamená, v tomto článku sa neuvádza verejná adresa URL pre túto rýchlu opravu), distribúcia vyžaduje technické vedenie, členom eskalačného tímu alebo nadriadeným a platí nasledovné:

  • Získať rýchlu opravu, musí zákazníkov vyskytujú chyby, ktoré je spomenuté v časti "Príznaky".

  • Musíte sledovať zákazníkov to Odoslať a dodať im najnovší balík service pack po sprístupnení (v prípade, že takýto balík vydaný).

Táto rýchla oprava bude tvoriť súčasť budúce rýchlych opráv a balíkov service pack SQL Server Compact 3.5 Service Pack 1.

V časti "Riešenie" sa uvádza, či táto rýchla oprava k dispozícii ako rýchla oprava alebo najnovší balík service pack. Na účely porovnania a testovania je pôvodná rýchla oprava je k dispozícii na webovej lokalite http://hotfix .

Poznámka pre technickej podpory: získať zostavy 3.5.5692.1, nájdete na webovej lokalite spoločnosti Microsoft:

http://hotfix

KB vyhľadávacieho poľa zadajte 958478a kliknite na tlačidlo Prejsť.

Stav

Spoločnosť Microsoft potvrdila, že ide o problém v produktoch spoločnosti Microsoft, ktoré sú uvedené v časti Vzťahuje sa na.

Ďalšie informácie

Po použití tejto rýchlej opravy, poskytovateľ odhadnúť typ údajov pre parameter EDM. Reťazec typ údajov alebo EDM. Binárne typ údajov. Procesor dotazu výber správneho typu údajov pre parameter na hodnotu alebo na stĺpec, ktorý parameter je prirovnať alebo ktorý používa parameter.

Napríklad nasledujúce Entity SQL dotazu, dotaz procesor vyberie obsahujúce oddelenú typ údajov pre name parameter, pred inštaláciou tejto rýchlej opravy.

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

Po použití tejto rýchlej opravy pre name parameter vybratý typ údajov stĺpca meno .

Však v tomto príklade "LINQ do Entity" dotaz zlyhá, pretože name parameter je prirovnať k ani iné hodnoty, alebo stĺpca.

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

Táto rýchla oprava rieši známy problém, ktorý je popísaný v dokument readme pre SQL Server Compact 3.5. Ďalšie informácie nájdete v časti "SQL Server Compact 3.5 SP1 Runtime problémy pre ADO.NET Entity Framework" na webovej lokalite spoločnosti Microsoft:

http://download.microsoft.com/download/2/e/c/2ec70436-aef2-4ccb-93a3-ea2f3e20f77d/ReadmeSSC35.htmTáto rýchla oprava rieši problém, ktorý súvisí s nesprávne Transact-SQL príkazy, ktoré sa generujú, keď poskytovateľ konvertuje skalár Poddotazy sa konštrukcie.

Poznámka: Súvisí Poddotazy sa skonvertuje na skalár Poddotazy interne. Súvisí Poddotazy nie sú podporované v tejto verzii. Po spustení tieto dotazy, zobrazí nasledujúce chybové hlásenie:

Chyba pri spúšťaní príkazu definície. Pozri Vnútorná výnimka pre Podrobnosti.

Vnútorná výnimka obsahuje nasledujúce hlásenie:

Analýza dotaz vyskytla chyba. [.., Chyba token = ako]

Dôvodom je, že ADO.NET Entity Framework interpretuje vstupu dotazu ako dotaz, ktorý obsahuje viaceré použiť pripojiť typ alebo použiť vonkajšie spojenie. Napravo od stavu spojenie vráti hodnotu skalár, pripojiť sa zmení na skalár poddotaz. Poskytovateľ ADO.NET Entity Framework pre SQL Server Compact má previesť tento skalár poddotaz rovnocenné dotaz použiť vonkajšie spojenie typ, ktorý podporuje SQL Server Compact. Však v tomto vydaní tejto konverzii nevykonáva správne. Napríklad nasledujúce dotazu v tejto verzii sa vyskytne chyba.

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

Ďalšie informácie o schéme pomenúvania pre aktualizácie aplikácie SQL Server, po kliknutí na nasledovné číslo článku publikovaného v databáze Microsoft Knowledge Base:

822499 nové pomenovania schém pre SQL Server aktualizácie balíkov

Ďalšie informácie o terminológii z oblasti aktualizácií softvéru získate po kliknutí na nasledujúce číslo článku publikovaného v databáze Microsoft Knowledge Base:

824684 Popis štandardnej terminológie použitej na popis aktualizácií softvéru od spoločnosti Microsoft

Informácie o zásobníku volaní

   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
Scenár: ericzha
Tech Reviewer: Kennethr; abidkhan; rtandon; vamshikb
Editor: v-andmck

Potrebujete ďalšiu pomoc?

Rozšírte svoje zručnosti
Preskúmať školenie
Buďte medzi prvými, ktorí získajú nové funkcie
Pripojiť k Microsoft insiderov chcú

Považujete poskytnuté informácie za užitočné?

Ďakujem za vaše pripomienky!

×