Update: Fehlermeldung "LINQ to Entities" Ausführen einer Abfrage, die einen Zeichenfolgenparameter oder binary-Parameter in einer SQL Server Compact 3.5-Datenbank verwendet: "Datentypen Ntext und Image können in WHERE verwendet werden müssen, GRUPPIEREN, auf oder in...

Gilt für: Microsoft SQL Server Compact 3.5

Zusammenfassung


Dieser Artikel beschreibt folgendes über diese Version des Hotfixes:
  • Das Hotfix-Paket behobenen Probleme
  • Die erforderlichen Komponenten für die Installation des Hotfix-Pakets
  • Gibt an, ob Sie den Computer neu starten müssen, nachdem Sie das Hotfix-Paket installiert haben
  • Gibt an, ob das Hotfixpaket durch ein anderes Hotfixpaket ersetzt wird
  • Ob Sie Registrierungsschlüssel ändern müssen
  • Das Hotfix-Paket enthaltene Dateien

Problembeschreibung


Das folgende Szenario. Eine Anwendung verwendet Microsoft ADO.NET Entity Framework, das in Microsoft.NET Framework 3.5 Servicepack 1 auf Microsoft SQL Server Compact 3.5-Datenbank enthalten ist. In der Anwendung führen Sie eine "LINQ to Entities" Abfrage einen Parameter oder einen binären Parameter für die Datenbank. In diesem Szenario erhalten Sie die folgende Fehlermeldung beim Ausführen der Anwendungdes:
Die Datentypen Ntext und Image können nicht in, HAVING, GROUP BY- oder IN Klauseln, sofern diese Datentypen wie verwendet oder IS NULL-Prädikaten verwendet werden.

Ursache


Wenn Sie Parameter für eine Abfrage "LINQ to Entities" in einer Anwendung verwenden, können nicht die Basisdatenbank Typen angeben SQL Server Compact Entity Framework-Anbieter versucht ein Anbieter auf Parameter basierend auf dem Entity Data Model (EDM) des ursprünglichen Parameters. SQL Server Compact unterstützt nvarchar(max) Datentyp oder der Datentyp varbinary(max) nicht. Wenn der Anbieter den Datentyp für einen Parameter vom Typ Edm.String oder Edm.Binary Daten auswählt, muss der Anbieter den Parameter als einen der folgenden Datentypen basierend auf der EDM-Facets des Parameters markieren:
  • Für einen Zeichenfolgenparameter wählt der Anbieter den Datentyp nvarchar(4000) Ntext -Datentyp.
  • Für einen binären Parameter wählt Anbieter varbinary(4000) Datentyp Image -Datentyp.
Wenn der Anbieter Parameter als Datentyp nvarchar(4000) oder als varbinary(4000) -Datentyp ist, tritt ein Fehler beim Einfügen von Werten, die größer als 8000 Bytes sind. Darüber hinaus tritt Anbieter Parameter als Datentyp Ntext oder Image -Datentyp ist, ein Fehler Wenn alle Gleichheitsoperationen Gruppiervorgänge oder Sortiervorgänge auf der Parameter durchgeführt werden.

Problemlösung


Hotfix-Informationen

Ein unterstützter Hotfix ist von Microsoft erhältlich. Dieser Hotfix soll nur der Behebung des Problems dienen, das in diesem Artikel beschrieben wird. Wenden Sie dieses Hotfix nur auf Systeme an, bei denen das in diesem Artikel beschriebene Problem auftritt. Dieser Hotfix sollte weiteren Tests unterzogen werden. Wenn Ihr System durch dieses Problem nicht schwerwiegend beeinträchtigt ist, empfehlen wir sie, auf das nächste Softwareupdate zu warten, das diesen Hotfix enthält.

Wenn der Hotfix zum Download zur Verfügung steht, gibt es einen Abschnitt "Hotfixdownload available" ("Hotfixdownload verfügbar"), am oberen Rand dieses Knowledge Base-Artikel. Wenn dieser Abschnitt nicht angezeigt wird, wenden Sie sich an den Microsoft Customer Service and Support, um den Hotfix zu erhalten.

Hinweis Falls weitere Probleme auftreten oder andere Schritte zur Problembehandlung erforderlich sind, müssen Sie möglicherweise eine separate Serviceanfrage erstellen. Die normalen Supportkosten gelten für zusätzliche Supportfragen und Probleme, die nicht diesem speziellen Hotfix zugeordnet werden können. Für eine vollständige Liste der Telefonnummern des Microsoft Customer Service and Support, oder um eine separate Serviceanfrage zu erstellen, gehen Sie auf folgende Microsoft-Website:Hinweis Das Formular "Hotfix download available" ("Hotfixdownload verfügbar") zeigt die Sprachen an, für die der Hotfix verfügbar ist. Wenn Ihre Sprache nicht angezeigt wird, ist dieser Hotfix für Ihre Sprache nicht verfügbar.

Voraussetzungen

Um diesen Hotfix anwenden zu können, müssen Sie die zuvor installierte SQL Server Compact 3.5 Service Pack 1 installieren Sie die MSI-Datei, die bereitgestellt wird dieser Hotfix deinstallieren. Wenn Sie nicht die zuvor installierte SQL Server Compact 3.5 Service Pack 1 deinstallieren, erhalten Sie Installation eine Fehlermeldung angezeigt, die besagt, dass eine neuere Version von SQL Server Compact installiert ist. Weitere Informationen zu SQL Server Compact 3.5 Service Pack 1 Klicken Sie auf die folgenden Artikelnummer der Microsoft Knowledge Base:

955965 Beschreibung des SQL Server Compact 3.5 Servicepack 1

Informationen zum Neustart

Sie müssen keinen Neustart des Computers nach der Installation dieses Hotfixes durchführen.

Informationen zur Registrierung

Sie haben nicht die Registrierung ändern.

Hotfix-Informationen

Dieser Hotfix enthält nur die Dateien, die in diesem Artikel beschriebenen Probleme zu beheben. Dieser Hotfix enthält möglicherweise nicht alle Dateien, die Sie benötigen, um ein Produkt vollständig auf den neuesten Stand zu aktualisieren.

Die englische Version dieses Hotfixes weist Dateiattribute (oder spätere Attribute), die in der folgenden Tabelle aufgelistet sind. Die Datums- und Uhrzeitangaben für diese Dateien sind in Coordinated Universal Time (UTC) aufgelistet. Wenn Sie die Dateiinformationen anzeigen, werden sie in die lokale Zeit konvertiert. Um die Differenz zwischen UTC und der Ortszeit zu finden, verwenden Sie die Registerkarte Zeitzone unter Datum und Uhrzeit in der Systemsteuerung.
DateinameDateiversionDateigrößeDatumZeitPlattform
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 hat bestätigt, dass es sich um ein Problem bei den Microsoft-Produkten handelt, die im Abschnitt „Eigenschaften“ aufgeführt sind.

Weitere Informationen


Nach Installation dieses Hotfixes ist der Anbieter nicht den Datentyp eines Parameters EDM erraten. String Datentyp oder EDM. Binäre Datentyp. Der Abfrageprozessor wählt den richtigen Datentyp für den Parameter auf den Wert oder die Spalte die Parameters identisch ist oder mit denen der Parameter verwendet wird.

Beispielsweise wählt in der folgenden Entity SQL-Abfrage der Abfrageprozessor Ntext -Datentyp für den Parameter , bevor Sie diesen Hotfix anwenden.
String name = "XYZ";var q = from e in nwind.Employees
where e.First_Name = name
select e;

Nachdem Sie diesen Hotfix anwenden, wird der Datentyp der Spalte Vorname für den Parameter ausgewählt.

Im folgenden Beispiel fehlschlägt "LINQ-Entität" Abfrage jedoch, weil der Namensparameter wird gleichgesetzt weder mit anderen Wert oder Spalte verwendet.
String name = "XYZ";var q = from e in nwind.Employees
select name;

Dieser Hotfix behebt auch ein bekanntes Problem in der Infodatei für SQL Server Compact 3.5 beschrieben wird. Weitere Informationen finden Sie im Abschnitt "SQL Server Compact 3.5 SP1-Laufzeit Probleme für das ADO.NET Entity Framework" von der folgenden Microsoft-Website:Dieser Hotfix behebt das Problem, das falsche Transact-SQL-Anweisung ist, die generiert werden, wenn der Anbieter skalare Unterabfragen anzuwendende Konstrukte konvertiert.

Hinweis Korrelierten Unterabfragen sind Skalare Unterabfragen intern konvertiert. Korrelierten Unterabfragen sind in dieser Version nicht unterstützt. Wenn Sie diese Abfragen ausführen, erhalten Sie folgende Fehlermeldung:
Fehler beim Ausführen der Command-Definition. Details finden Sie die innere Ausnahme.
Die innere Ausnahme enthält folgende Meldung:
Fehler bei der Analyse der Abfrage. [.., Fehler token = AS]
Der Grund ist, dass ADO.NET Entity Framework Eingabeabfrage als eine Abfrage interpretiert, die den Verknüpfungstyp CROSS APPLY oder den Verknüpfungstyp OUTER APPLY. Wenn rechts der Join-Bedingung einen skalaren Wert zurückgibt, wird die Verknüpfung in eine skalare Unterabfrage konvertiert. ADO.NET Entity Framework-Datenanbieter für SQL Server Compact ist eine entsprechende Abfrage, skalare Unterabfrage konvertieren, die den Verknüpfungstyp OUTER APPLY SQL Server Compact unterstützt. Allerdings ist in dieser Version diese Konvertierung nicht richtig. Beispielsweise tritt ein Fehler für die folgende Abfrage in dieser Version.
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());
}
}

Weitere Informationen zum Benennungsschema für SQL Server-Updates klicken Sie auf die folgenden Artikelnummer der Microsoft Knowledge Base:

Neues Benennungsschema für Microsoft SQL Server-Software 822499 Pakete aktualisieren

Um weitere Informationen zur Terminologie für Softwareupdates zu erhalten, klicken Sie auf die folgende Artikelnummer, um den Artikel der Microsoft Knowledge Base anzuzeigen:
824684 Erläuterung von der standardmäßigen Standardbegriffen bei Microsoft Softwareupdates