KB2421014 — POPRAWKA: Komunikat o błędzie "Wystąpiły poważne błędy bieżącego polecenia" podczas korzystania z funkcji Freetexttable lub Containstable w widoku indeksowanym w zapytaniu CTE w SQL Server 2008 lub SQL Server 2008 R2

Dotyczy
SQL Server 2008 SQL Server 2008 R2 SQL Server 2008 Service Pack 2

Firma Microsoft dystrybuuje poprawki dla programów Microsoft SQL Server 2008 i Microsoft SQL Server 2008 R2 jako jeden plik do pobrania. Ponieważ poprawki są zbiorcze, każda nowa wersja zawiera wszystkie poprawki i poprawki zabezpieczeń zawarte w poprzedniej wersji poprawki dla programu SQL Server 2008 lub SQL Server 2008 R2.

Objawy

Załóżmy, że na serwerze jest zainstalowane nazwane wystąpienie w programie Microsoft SQL Server 2008 lub Microsoft SQL Server 2008 R2. Uruchomienie zapytania CTE (Common Table Expression) korzystającego z funkcji Freetexttable lub Containstable w widoku indeksowanym kończy się niepowodzeniem i występuje wyjątek naruszenia zasad dostępu. Ponadto wyświetlany jest następujący komunikat o błędzie:

Uwaga

Wiadomość 0, Poziom 11, Stan 0, Wiersz 0
Wystąpił poważny błąd bieżącego polecenia. Ewentualne wyniki należy odrzucić.

Na przykład wyjątek naruszenia zasad dostępu występuje po uruchomieniu następującego kodu:

WITH CTE AS  (select [Key] as Key, [Rank] from FREETEXTTABLE(< indexed view name >, *, '< search string >'))  SELECT * FROM CTE  

Rozwiązanie

Informacje o aktualizacji zbiorczej

Dodatek Service Pack 2 dla programu SQL Server 2008

Poprawkę rozwiązującą ten problem opublikowano po raz pierwszy w aktualizacji zbiorczej 4 dla dodatku Service Pack 2 dla programu SQL Server 2008. Aby uzyskać więcej informacji dotyczących tego pakietu aktualizacji skumulowanych, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Baza wiedzy Microsoft Knowledge Base:

2527180 Pakiet aktualizacji zbiorczych 4 dla dodatku Service Pack 2 SQL Server 2008Uwaga Ponieważ te kompilacje mają charakter zbiorczy, każda nowa poprawka zawiera wszystkie poprawki i poprawki zabezpieczeń z poprzednich wersji poprawek SQL Server 2008. Firma Microsoft zaleca rozważenie zastosowania najnowszej wersji poprawki zawierającej tę poprawkę. Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Baza wiedzy Microsoft Knowledge Base:

2402659 Kompilacje SQL Server 2008 wydane po wydaniu dodatku Service Pack 2 SQL Server 2008 Poprawki Microsoft SQL Server 2008 są tworzone dla określonych SQL Server dodatków Service Pack. Należy zastosować poprawkę dodatku Service Pack 2 dla programu SQL Server 2008 do instalacji dodatku Service Pack 2 dla programu SQL Server 2008. Domyślnie każda poprawka dostępna w dodatku Service Pack dla programu SQL Server jest uwzględniona w następnym dodatku Service Pack dla programu SQL Server.

SQL Server 2008 R2

Poprawka rozwiązująca ten problem została po raz pierwszy opublikowana w aktualizacji zbiorczej 4. Aby uzyskać więcej informacji dotyczących sposobu uzyskania tego pakietu aktualizacji zbiorczej dla programu SQL Server 2008 R2, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Baza wiedzy Microsoft Knowledge Base:

2345451 Pakiet aktualizacji zbiorczej 4 dla systemu SQL Server 2008 R2 Uwaga Ponieważ te kompilacje są zbiorcze, każda nowa wersja poprawki zawiera wszystkie poprawki i poprawki zabezpieczeń z poprzednich wersji poprawek SQL Server 2008 R2. Zalecamy rozważenie zastosowania najnowszej wersji poprawki zawierającej tę poprawkę. Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Baza wiedzy Microsoft Knowledge Base:

981356 Kompilacje SQL Server 2008 R2 wydane po wydaniu SQL Server 2008 R2

Obejście

Aby obejść ten problem, użyj jednej z następujących metod:

  • Użyj widoku, tabeli tymczasowej lub zmiennej tabeli zamiast wyrażeń CTE do przechowywania wyników pośrednich.
  • Zaktualizuj zapytanie, aby używało tabeli pochodnej lub podzapytania. Eliminuje to konieczność stosowania CTE.

Stan

Firma Microsoft potwierdziła, że jest to problem dotyczący produktów firmy Microsoft wymienionych w sekcji „Dotyczy”.

Źródła informacji

Aby uzyskać więcej informacji na temat używania typowych wyrażeń w tabelach, odwiedź następującą witrynę firmy Microsoft w sieci Web:

Jak używać typowych wyrażeń stosowanych w tabelach Aby uzyskać więcej informacji o funkcji Freetexttable (Transact-SQL), odwiedź następującą witrynę firmy Microsoft w sieci Web:

FREETEXTTABLE (Transact-SQL) Aby uzyskać więcej informacji na temat funkcji Containstable (Transact-SQL), odwiedź następującą witrynę firmy Microsoft w sieci Web:

CONTAINSTABLE (Transact-SQL) Aby uzyskać więcej informacji o tworzeniu widoków indeksowanych, odwiedź następującą witrynę firmy Microsoft w sieci Web:

Jak tworzyć widoki indeksowane
        
Aby uzyskać więcej informacji dotyczących modelu obsługi przyrostowej dla programu SQL Server, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Baza wiedzy Microsoft Knowledge Base:

935897 Zespół SQL Server udostępnia model obsługi przyrostowej w celu dostarczania poprawek dla zgłoszonych problemów

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

822499 Nowy schemat nazewnictwa pakietów aktualizacji oprogramowania firmy Microsoft SQL Server Aby uzyskać więcej informacji dotyczących terminologii związanej z aktualizacjami oprogramowania, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Baza wiedzy Microsoft Knowledge Base:

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