Przejdź do głównej zawartości
Pomoc techniczna
Zaloguj się przy użyciu konta Microsoft
Zaloguj się lub utwórz konto.
Witaj,
Wybierz inne konto.
Masz wiele kont
Wybierz konto, za pomocą którego chcesz się zalogować.

Streszczenie

W tym artykule opisano następujące o tym wydaniu poprawek:

  • Problemy rozwiązane przez pakiet poprawek

  • Wymagania wstępne dotyczące instalacji pakietu poprawek

  • Czy należy ponownie uruchomić komputer po zainstalowaniu pakietu poprawki

  • Czy pakiet poprawek jest zastępowany przez inny pakiet poprawek

  • Czy należy wprowadzać jakiekolwiek zmiany w rejestrze

  • Pliki, które są zawarte w pakiecie poprawek

Objawy

Rozważmy następujący scenariusz. Aplikacja używa typu Microsoft ADO.NET Entity Framework, które jest zawarte w Microsoft.NET Framework 3.5 z dodatkiem Service Pack 1 do dostępu do bazy danych Microsoft SQL Server Compact 3.5. We wniosku możesz uruchomić kwerendę "LINQ to podmioty", która wykorzystuje ciąg parametru lub parametr binarnych w bazie danych. W tym scenariuszu pojawić następujący komunikat o błędzie podczas uruchamiania aplikacji:

Nie można użyć typów danych ntext i image w gdzie, HAVING, GROUP BY, na lub w klauzulach, z wyjątkiem, gdy te typy danych są używane z PODOBNYCH lub jest NULL predykatów.

Przyczyna

Gdy używane są parametry dla kwerendy "LINQ to podmioty" w aplikacji, nie można określić typy podstawowej bazy danych. Dostawca programu SQL Server Compact Entity Framework próbuje utworzyć parametr dostawca poziom oparte na aspekty modelu danych jednostki (EDM) oryginalnego parametru. SQL Server Compact nie obsługuje typu danych typu nvarchar(max) lub varbinary(max) typ danych. W związku z tym gdy dostawca wybierze typ danych dla parametru typu danych Edm.String lub Edm.Binary typu danych, dostawca musi oznaczyć parametr jako jeden z następujących typów danych oparte na aspekty EDM parametru:

  • Dla parametru ciąg dostawca wybiera nvarchar(4000) typ danych lub typu danych ntext .

  • Dla parametru binarnym dostawca wybiera typ danych varbinary(4000) lub typ danych obrazu .

Jeśli dostawca oznaczy parametr jako nvarchar(4000) typ danych lub typ danych varbinary(4000) , błąd występuje podczas próby wstawienia wartości, które są większe niż 8000 bajtów. Ponadto jeśli dostawca oznaczy jako typu danych ntext lub image typ danych parametru, błąd występuje, jeśli na parametr Trwa wykonywanie wszelkich operacji równości, operacji grupowania lub operacje sortowania.

Rozwiązanie

Informacje o poprawce

Obsługiwana poprawka jest udostępniana przez firmę Microsoft. Jednak ta poprawka jest przeznaczona tylko do usunięcia problemu opisanego w tym artykule. Zastosuj poprawkę tylko w systemach, w których występuje problem opisany w tym artykule. Ta poprawka może być wciąż w fazie testowania. Jeśli dany system nie jest poważnie narażony na ten problem, firma Microsoft zaleca, aby poczekać na następną aktualizację oprogramowania zawierającą tę poprawkę.

Jeśli poprawka jest dostępna do pobrania, pojawi się sekcja "Poprawka dostępna do pobrania" na początku tego artykułu z bazy wiedzy Knowledge Base. Jeśli nie ma tej sekcji, skontaktuj się z Obsługą i Wsparciem Klienta Microsoft w celu uzyskania poprawki.

Uwaga Jeśli wystąpią dodatkowe błędy lub konieczność rozwiązania problemu, być może trzeba będzie utworzyć osobne zlecenie usługi. Zwykłe koszty obsługi będą zastosowane do dodatkowych pytań i problemów, których nie można rozwiązać przy użyciu określonej poprawki. Aby uzyskać pełną listę numerów telefonów pomocy technicznej i obsługi klienta firmy Microsoft lub utworzyć osobne zlecenie usługi, odwiedź następującą witrynę firmy Microsoft w sieci Web:

http://support.microsoft.com/contactus/?ws=supportUwaga "Poprawka dostępna do pobrania" zawiera listę języków, dla których dostępna jest poprawka. Jeśli odpowiedni język nie jest widoczny, to dlatego, że poprawka nie jest dostępna dla danego języka.

Wymagania wstępne

Aby zastosować tę poprawkę, należy odinstalować poprzednio zainstalowanego programu SQL Server Compact 3.5 Service Pack 1 zainstalować plik msi, który jest dostarczony z tej poprawki. Jeśli poprzednio zainstalowanego programu SQL Server Compact 3.5 Service Pack 1 nie należy odinstalowywać, zostanie wyświetlony komunikat o błędzie instalacji, który stanowi, że już jest zainstalowana nowsza wersja programu SQL Server Compact. Aby uzyskać więcej informacji na temat SQL Server Compact 3.5 z dodatkiem Service Pack 1, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

955965 opis programu SQL Server Compact 3.5 z dodatkiem Service Pack 1

Informacje dotyczące ponownego uruchamiania

Nie musisz ponownie uruchomiać komputera po zastosowaniu tej poprawki.

Informacje dotyczące rejestru

Nie masz zmiany w rejestrze.

Informacje o plikach poprawki

Ta poprawka zawiera tylko te pliki, które są wymagane do rozwiązania problemów wymienionych w tym artykule zamieszczono listę. Ta poprawka może nie zawierać wszystkich plików, które są niezbędne do pełnej aktualizacji produktu do nowszej kompilacji.

Wersja anglojęzyczna tej poprawki ma atrybuty plików (lub nowsze) wymienione w poniższej tabeli. Daty i godziny odpowiadające tym plikom zostały podane w formacie uniwersalnego czasu koordynowanego (UTC, Coordinated Universal Time). Po wyświetleniu informacji o pliku są konwertowane na czas lokalny. Aby zobaczyć różnicę między czasem UTC i czasem lokalnym, należy użyć z karty Strefa czasowa w aplecie Data i godzina w Panelu sterowania.

Nazwa pliku

Wersja pliku

Rozmiar pliku

Data

Godzina

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

Stan

Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji „Dotyczy”.

Więcej informacji

Po zastosowaniu tej poprawki, dostawca nie odgadnąć typ danych dla parametru EDM. Ciąg typ danych lub EDM. Binarne typu danych. Procesor kwerend wybiera poprawny typ danych dla parametru na podstawie wartości lub kolumny jest równa parametru lub jest używany parametr.

Na przykład w następującej kwerendzie SQL jednostki, procesor kwerend wybiera ntext typ danych dla parametru Nazwa przed zastosowaniem tej poprawki.

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

Po zastosowaniu tej poprawki, typ danych kolumny Imię zaznaczono parametr name .

Jednak w poniższym przykładzie kwerenda "LINQ do jednostki" nie działa, ponieważ parametr name jest równa ani używane z dowolną wartością lub kolumny.

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

Ta poprawka rozwiązuje również znany problem, który jest opisany w dokumencie readme dla SQL Server Compact 3.5. Aby uzyskać więcej informacji zobacz sekcję "SQL Server Compact 3.5 z dodatkiem SP1 Runtime problemów dla ADO.NET Entity Framework" w następującej witrynie firmy Microsoft w sieci Web:

http://download.microsoft.com/download/2/e/c/2ec70436-aef2-4ccb-93a3-ea2f3e20f77d/ReadmeSSC35.htmTa poprawka rozwiązuje problem, który jest powiązany z niepoprawne instrukcji języka Transact-SQL, które są generowane, gdy dostawca konwertuje podzapytań skalarnych, aby zastosować konstrukcje.

Uwaga Podkwerendy skorelowanych są konwertowane na podzapytań skalarnych wewnętrznie. Skorelowanych podkwerend nie są obsługiwane w tej wersji. Po uruchomieniu tych kwerend, pojawi się następujący komunikat o błędzie:

Wystąpił błąd podczas wykonywania polecenia definicji. Zobacz wyjątek wewnętrzny, aby uzyskać szczegółowe informacje.

Wyjątek wewnętrzny zawiera następujący komunikat:

Wystąpił błąd podczas analizy kwerendy. [.., Token błędu = AS]

Dlatego, że ADO.NET Entity Framework interpretuje wejściowych kwerendy jako kwerendy, która ma typ sprzężenia granic ZASTOSOWAĆ lub typ sprzężenia zewnętrznego zastosowania. Jeśli po prawej stronie warunku sprzężenia zwraca wartość skalarną, sprzężenie jest konwertowany na skalarnym podzapytaniem. Aby przekonwertować ten skalarnym podzapytaniem równoważne kwerendy, która ma typ sprzężenia zewnętrznego zastosowania, który jest obsługiwany przez program SQL Server Compact ma dostawcy ADO.NET Entity Framework dla programu SQL Server Compact. Jednakże w tym wydaniu ta konwersja nie odbywa się prawidłowo. Na przykład wystąpi błąd dla następującej kwerendy w tej wersji.

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

Aby uzyskać więcej informacji na temat schematu nazewnictwa dla aktualizacji programu SQL Server kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

Pakiety aktualizacji 822499 nowy schemat nazewnictwa dla oprogramowania Microsoft SQL Server

Aby uzyskać więcej informacji dotyczących terminologii aktualizacji oprogramowania, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

824684 Opis standardowej terminologii używanej do opisywania aktualizacji oprogramowania firmy Microsoft

Potrzebujesz dalszej pomocy?

Chcesz uzyskać więcej opcji?

Poznaj korzyści z subskrypcji, przeglądaj kursy szkoleniowe, dowiedz się, jak zabezpieczyć urządzenie i nie tylko.

Społeczności pomagają zadawać i odpowiadać na pytania, przekazywać opinie i słuchać ekspertów z bogatą wiedzą.

Czy te informacje były pomocne?

Jaka jest jakość języka?
Co wpłynęło na Twoje wrażenia?
Jeśli naciśniesz pozycję „Wyślij”, Twoja opinia zostanie użyta do ulepszania produktów i usług firmy Microsoft. Twój administrator IT będzie mógł gromadzić te dane. Oświadczenie o ochronie prywatności.

Dziękujemy za opinię!

×