KB2588970-FIX: błąd "serwer: Msg 7359" podczas uruchamiania zapytania rozproszonego w programie SQL Server 2008 lub SQL Server 2008 R2, jeśli wersja schematu jest aktualizowana więcej niż pięć razy

Firma Microsoft rozpowszechnia poprawki programu Microsoft SQL Server 2008 z dodatkiem Service Pack 2 (SP2) lub Microsoft SQL Server 2008 R2 jako jednego pliku do pobrania. Ponieważ poprawki są kumulatywne, każda nowa wersja zawiera wszystkie poprawki i wszystkie aktualizacje zabezpieczeń, które zostały dołączone do poprzedniej wersji programu SQL Server 2008 z dodatkiem SP2 lub SQL Server 2008 R2.

Symptomy

Rozpatrzmy następujący scenariusz:

  • Serwer połączony można utworzyć na komputerze z uruchomionym programem Microsoft SQL Server 2008 lub Microsoft SQL Server 2008 R2. Serwer połączony wskazuje źródło danych OLE DB na serwerze zdalnym.

  • Uruchom zapytanie rozproszone, w którym są używane niektóre obiekty danych na serwerze połączonym.

  • Wykonywanie operacji na serwerze zdalnym jest wykonywane, a operacje powodują, że w obiektach danych są aktualizowane ponad pięć aktualizacji wersji schematu. Na przykład odbudowano indeks tabeli na serwerze zdalnym, aby zaktualizować wersję schematu tabeli na serwerze połączonym.Uwaga Wykonujesz te czynności przed rozpoczęciem następnego wykonania zapytania.

  • Ponownie uruchom zapytanie rozproszone na serwerze połączonym.

W tym scenariuszu kwerenda nie jest ponownie kompilowana, a zostanie wyświetlony komunikat o błędzie podobny do następującego:

Serwer: Msg 7359, numerpoziomu poziomu, numer stanuw wierszu, numer wierszawiersza, dostawca OLE DB "Nazwa dostawcy" dla połączonego serwera "Nazwa serwera połączonego" zgłosiła zmianę w wersji schematu między godziną kompilacji ("czas kompilacji") i godziną wykonania ("czas wykonania") dla tabeli "Nazwa połączonej tabeli".

Uwagi

  • Nazwa dostawcy to symbol zastępczy nazwy dostawcy OLE DB.

  • Nazwa tabeli połączonej jest symbolem zastępczym nazwy tabeli, do której odnosi się zapytanie na serwerze połączonym.

  • Poniższe instrukcje mogą zwykle zmienić wersję schematu:

    • ALTER TABLE

    • UTWÓRZ INDEKS

    • USUWANIE INDEKSU

    • POLECENIE DBCC REINDEX

Przyczyna

Ten problem występuje, ponieważ osiągnięto limit ponownych kompilacji dla zapytań. Po wprowadzeniu zmiany w schemacie niektóre obiekty w pamięci podręcznej są usuwane, a zapytanie wymaga wykonania operacji ponownej kompilacji. Jednak Górna granica ponownego kompilowania jest dostępna po upływie pięciu zmian umożliwiających zaktualizowanie wersji schematu. Dlatego występuje problem opisany w sekcji "Symptomy".

Rozwiązanie

Informacje o aktualizacji zbiorczej

SQL Server 2008 R2

Poprawka dotycząca tego problemu została wydana po raz pierwszy w aktualizacji zbiorczej 11. Aby uzyskać więcej informacji na temat sposobu uzyskiwania tego zbiorczego pakietu aktualizacji dla programu SQL Server 2008 R2, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

2633145 Pakiet aktualizacji zbiorczej 11 dla programu SQL Server 2008 R2 Uwaga Ponieważ kompilacja jest zbiorcza, każdy nowy pakiet poprawek zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń dołączone do poprzedniej wersji poprawki SQL Server 2008 R2. Zalecamy zastosowanie najnowszego wydania poprawki zawierającego tę poprawkę. Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

981356 Kompilacje programu SQL Server 2008 R2, które zostały wydane po opublikowaniu programu SQL Server 2008 R2

SQL Server 2008 R2 z dodatkiem Service Pack 1

Poprawka dotycząca tego problemu została wydana po raz pierwszy w aktualizacji skumulowanej 4 dla programu SQL Server 2008 R2 z dodatkiem Service Pack 1. Aby uzyskać więcej informacji na temat sposobu uzyskiwania tego zbiorczego pakietu aktualizacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

2633146 Pakiet aktualizacji zbiorczej 4 dla programu SQL Server 2008 R2 z dodatkiem Service Pack 1Uwaga Ponieważ kompilacja jest zbiorcza, każdy nowy pakiet poprawek zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń dołączone do poprzedniej wersji poprawki SQL Server 2008 R2. Zalecamy zastosowanie najnowszego wydania poprawki zawierającego tę poprawkę. Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

2567616 Kompilacje programu SQL Server 2008 R2, które zostały wydane po opublikowaniu dodatku Service Pack 1 dla programu SQL Server 2008 R2

SQL Server 2008 z dodatkiem Service Pack 3

Poprawka dotycząca tego problemu została wydana po raz pierwszy w aktualizacji zbiorczej 1 dla programu SQL Server 2008 z dodatkiem Service Pack 3. Aby uzyskać więcej informacji na temat tego zbiorczego pakietu aktualizacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

2617146 Pakiet aktualizacji zbiorczej 1 dla programu SQL Server 2008 z dodatkiem Service Pack 3Uwaga Ponieważ kompilacja jest zbiorcza, każdy nowy pakiet poprawek zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń, które zostały dołączone do poprzedniej wersji poprawki SQL Server 2008. Firma Microsoft zaleca zastosowanie najnowszego wydania poprawki zawierającego tę poprawkę. Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

2629969 Kompilacje programu SQL Server 2008 wydane po opublikowaniu dodatku Service Pack 3 dla programu SQL Server 2008 Poprawki programu Microsoft SQL Server 2008 są tworzone dla określonych pakietów Service Pack programu SQL Server. Musisz zastosować poprawkę dodatku Service Pack 3 dla programu SQL Server 2008 do instalacji dodatku Service Pack 3 dla programu SQL Server 2008. Wszystkie poprawki podane w dodatku Service Pack programu SQL Server są domyślnie zawarte w następnym dodatku Service Pack dla programu SQL Server.

Pakiet aktualizacji zbiorczej 6 dla programu SQL Server 2008 z dodatkiem SP2

Poprawka dotycząca tego problemu została po raz pierwszy wydana w pakiecie aktualizacji zbiorczej 6. Aby uzyskać więcej informacji na temat sposobu uzyskiwania tego pakietu aktualizacji zbiorczej dla programu SQL Server 2008 z dodatkiem SP2, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

2582285 Pakiet aktualizacji zbiorczej 6 dla programu SQL Server 2008 z dodatkiem Service Pack 2Uwaga Ponieważ kompilacja jest zbiorcza, każda nowa wersja aktualizacji zawiera wszystkie poprawki i wszystkie aktualizacje zabezpieczeń, które zostały dołączone do poprzedniej wersji aktualizacji programu SQL Server 2008 z dodatkiem SP2. Zalecamy zastosowanie najnowszego wydania aktualizacji, który zawiera tę poprawkę. Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

2402659 Kompilacje programu SQL Server 2008 wydane po opublikowaniu dodatku SP2 dla programu SQL Server 2008

Obejście

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

  • Uruchom instrukcję DBCC FREEPROCCACHE(' Plan_Handle '). Aby uzyskać więcej informacji na temat parametru Plan_Handle , odwiedź następującą witrynę MSDN w sieci Web:

    Informacje ogólne o parametrze Plan_Handle

  • Uruchom sp_refreshViewą procedurę przechowywaną "viewName".Uwaga Ta metoda nie działa, jeśli jest zainstalowany pakiet aktualizacji zbiorczej 3 dla programu SQL Server 2008 z dodatkiem SP2.

Stan

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

Potrzebna dalsza pomoc?

Rozwijaj swoje umiejętności
Poznaj szkolenia
Uzyskuj nowe funkcje w pierwszej kolejności
Dołącz do niejawnych testerów firmy Microsoft

Czy te informacje były pomocne?

Dziękujemy za opinię!

×