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