HURTIGREPARASJON: Feilmelding når du kjører en spørring for "LINQ til enheter" som bruker en parameter i spørringsstreng eller binære parameter mot en database i SQL Server Compact 3.5: "datatypene ntext og bilde kan ikke brukes i WHERE, HAVING, GRUPPERE etter, på eller IN....

Gjelder: Microsoft SQL Server Compact 3.5

Sammendrag


Denne artikkelen beskriver følgende om denne hurtigreparasjonen utgivelsen:
  • Problemene som er løst i hurtigreparasjonspakken
  • Forutsetningene for å installere hurtigreparasjonspakken
  • Om du må starte datamaskinen på nytt etter at du har installert hurtigreparasjonspakken
  • Om hurtigreparasjonspakken erstattes av andre hurtigreparasjonspakken
  • Om du må foreta endringer i registret
  • Filene som er inkludert i hurtigreparasjonspakken

Symptomer


Tenk deg følgende. Et program bruker Microsoft ADO.NET Entity Framework som er inkludert i Microsoft.NET Framework 3.5 Service Pack 1 tilgang til en Microsoft SQL Server Compact 3.5-database. I programmet, kan du kjøre en spørring for "LINQ til enheter" som bruker en parameter i spørringsstreng eller binære parameter mot databasen. I dette scenariet får du følgende feilmelding når du kjører programmet:
Datatypene ntext og bilde kan ikke brukes i der, HAVING, GROUP BY, på eller i setninger, bortsett fra når disse datatypene brukes med LIGNENDE eller er NULL predikater.

Årsak


Når du bruker parametere for en spørring for "LINQ til enheter" i et program, kan du ikke angi grunnleggende databasetyper. SQL Server Compact Entity Framework-leverandøren prøver å opprette en nivået leverandør-parameter som er basert på de Entity Data Model (EDM) deler av den opprinnelige parameteren. SQL Server Compact støtter ikke datatypen nvarchar(max) eller varbinary(max) -datatype. Når leverandøren velger datatypen for en parameter av typen Edm.String eller av typen Edm.Binary , har derfor leverandøren til å markere parameteren som én av følgende datatyper basert på EDM-deler av parameteren:
  • For en parameter i spørringsstreng velger leverandøren av typen nvarchar(4000) eller ntext -datatypen.
  • For en binær-parameteren velger leverandøren av typen varbinary(4000) eller datatypen bilde .
Hvis leverandøren, merker du parameteren som typen nvarchar(4000) eller varbinary(4000) -datatypen, oppstår en feil når du prøver å sette inn verdier som er større enn 8 000 byte. Hvis leverandøren, merker du parameteren som datatypen ntext eller image -datatype, oppstår en feil også hvis noen likhet operasjoner, grupperingsoperasjoner eller sortering operasjoner utføres på-parameteren.

Oppløsning


Informasjon om hurtigreparasjon

En støttet hurtigreparasjon er tilgjengelig fra Microsoft. Denne hurtigreparasjonen er imidlertid ment å løse problemet som er beskrevet i denne artikkelen. Bruk denne hurtigreparasjonen bare på systemer som har problemet som er beskrevet i denne artikkelen. Denne hurtigreparasjonen kan gjennomgå ytterligere testing. Hvis du ikke er alvorlig påvirket av dette problemet, anbefaler vi derfor at du venter på neste programvareoppdatering som inneholder denne hurtigreparasjonen.

Hvis hurtigreparasjonen er tilgjengelig for nedlasting, finnes delen "Nedlasting av hurtigreparasjoner tilgjengelig" øverst i denne Knowledge Base-artikkelen. Hvis denne delen ikke vises, kan du kontakte Microsofts kundeservice og kundestøtte for å få hurtigreparasjonen.

Obs! Hvis det oppstår andre problemer, eller hvis feilsøkingstips, må du kanskje opprette en separat forespørsel om. Vanlige kundestøttekostnader gjelder for ytterligere kundestøttespørsmål og problemer som ikke dekkes av denne oppdateringen. For en fullstendig liste over telefonnumre for Microsofts kundeservice og kundestøtte eller opprette en separat forespørsel om, kan du gå til følgende Microsoft-webområde:Obs! "Nedlasting av hurtigreparasjoner tilgjengelig"-skjemaet viser språk hurtigreparasjonen er tilgjengelig. Hvis du ikke ser språket ditt, er det fordi en hurtigreparasjon ikke er tilgjengelig for dette språket.

Forutsetninger

Hvis du vil bruke denne hurtigreparasjonen, må du avinstallere den tidligere installerte SQL Server Compact 3.5 Service Pack 1 for å installere MSI-filen som følger med denne hurtigreparasjonen. Hvis du ikke avinstallere den tidligere installerte SQL Server Compact 3.5 Service Pack 1, får du en installasjonsfeilmelding som sier at det allerede er installert en nyere versjon av SQL Server Compact. For mer informasjon om SQL Server Compact 3.5 Service Pack 1, klikker du følgende artikkelnummer for å vise artikkelen i Microsoft Knowledge Base:

955965 -beskrivelse av SQL Server Compact 3.5 Service Pack 1

Informasjon om omstart

Du har ikke datamaskinen på nytt etter at du har installert denne hurtigreparasjonen.

Informasjonen i registeret

Du har ikke til å endre registret.

Filinformasjon

Denne hurtigreparasjonen inneholder bare de filene som er nødvendige for å rette opp problemene som denne artikkelen. Denne hurtigreparasjonen vil kanskje ikke inneholde alle filene du trenger for fullstendig å oppdatere et produkt til den siste versjonen.

Den engelskspråklige versjonen av denne hurtigreparasjonen har filattributtene (eller senere filattributter) som er oppført i følgende tabell. Datoene og klokkeslettene for disse filene er oppført i Coordinated Universal Time (UTC). Når du viser filinformasjonen, konverteres den til lokal tid. Hvis du vil finne forskjellen mellom UTC og lokal tid, kan du bruke kategorien tidssone under dato og klokkeslett i Kontrollpanel.
FilnavnFilversjonFilstørrelseDatoTidPlattform
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

Status


Microsoft har bekreftet at dette er et problem i Microsoft-produktene som er oppført i delen "Gjelder for".

Hvis du vil ha mer informasjon


Når du har installert denne hurtigreparasjonen, leverandøren ikke gjette datatypen for en parameter for EDM. Streng datatype eller EDM. Binære datatype. Spørringsprosessoren velger den riktige datatypen for parameteren, basert på verdien eller kolonnen til parameteren er equated eller -parameteren er brukt.

Velger for eksempel i følgende Entity SQL-spørringen Spørringsprosessoren ntext -datatypen for parameteren navn før du installerer denne hurtigreparasjonen.
String name = "XYZ";var q = from e in nwind.Employees
where e.First_Name = name
select e;

Når du har installert denne hurtigreparasjonen, blir datatypen i kolonnen Fornavn er valgt for name -parameteren.

Imidlertid i eksemplet nedenfor "LINQ til enhet" spørringen mislykkes fordi parameteren navnet verken equated til eller brukes sammen med en hvilken som helst annen verdi eller kolonnereferanse.
String name = "XYZ";var q = from e in nwind.Employees
select name;

Denne hurtigreparasjonen løser et kjent problem som er beskrevet i Viktig-filen for SQL Server Compact 3.5. Hvis du vil ha mer informasjon, kan du se delen "SQL Server Compact 3.5 SP1 Runtime problemer for the ADO.NET Entity Framework" på følgende Microsoft-webområde:Denne hurtigreparasjonen løser problemet som er knyttet til feil Transact-SQL-setninger som genereres når leverandøren konverterer skalar delspørringer gjelder konstruksjoner.

Obs! Samsvarende delspørringer konverteres til skalar delspørringer internt. Samsvarende delspørringer støttes ikke i denne versjonen. Når du kjører disse spørringene, får du følgende feilmelding:
Det oppstod en feil under utføring av kommandodefinisjonen. Se det interne unntaket for mer informasjon.
Det interne unntaket inneholder følgende melding:
Det oppstod en feil under tolking av forespørselen. [.., Token med feil = AS]
Årsaken er at rammeverket for ADO.NET-enhet tolker inndata spørringen som en spørring som har sammenføyningstypen på TVERS av bruk eller ytre bruke sammenføyningstypen. Hvis på høyre side av sammenføyningsbetingelsene returnerer en skalarverdi, konverteres sammenføyningen til en skalar delspørring. ADO.NET Entity Framework-leverandøren for SQL Server Compact har til å konvertere den skalerbare delspørringen til en tilsvarende spørring som har den ytre bruke sammenføyningstypen, som støttes av SQL Server Compact. Men i denne versjonen, denne konverteringen ikke blir gjort riktig. For eksempel oppstår en feil for følgende spørring i denne versjonen.
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());
}
}

Hvis du vil ha mer informasjon om navngivingspraksis for SQL Server-oppdateringer, kan du klikke følgende artikkelnummer for å vise artikkelen i Microsoft Knowledge Base:

822499 Ny navngivingspraksis for Microsoft SQL Server-programvare for oppdateringspakker

Hvis du vil ha mer informasjon om terminologi for programvareoppdatering, kan du klikke følgende artikkelnummer for å vise artikkelen i Microsoft Knowledge Base:
824684 beskrivelse av standardterminologien som brukes til å beskrive oppdateringer av Microsoft-programvare