KB2498818 — POPRAWKA: Błąd 7359 podczas uruchamiania zapytania względem funkcji zdefiniowanej przez użytkownika lub widoku, w którym użyto synonimu na serwerze połączonym w SQL Server 2005, SQL Server 2008 lub SQL Server 2008 R2

Dotyczy
Microsoft SQL Server 2005 Service Pack 3 Microsoft SQL Server 2005 Service Pack 4 SQL Server 2008 Service Pack 2 Microsoft SQL Server 2005 SQL Server 2008 SQL Server 2008 R2

Firma Microsoft dystrybuuje poprawki dla programów Microsoft SQL Server 2005, 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 poprzednich wersjach poprawek dla programów SQL Server 2005, Microsoft SQL Server 2008 i SQL Server 2008 R2.

Poprawka opisana w tym artykule jest dostępna dla następujących wersji programu SQL Server:

  • Microsoft SQL Server 2005 z dodatkiem Service Pack 3 (SP3)
  • Microsoft SQL Server 2005 z dodatkiem Service Pack 4 (SP4)
  • Microsoft SQL Server 2008 z dodatkiem Service Pack 1 (SP1)
  • Microsoft SQL Server 2008 z dodatkiem Service Pack 2 (SP2)

Objawy

Rozważmy następujący scenariusz:

  • Tworzysz serwer połączony na komputerze z zainstalowanym programem Microsoft SQL Server 2005, Microsoft SQL Server 2008 lub Microsoft SQL Server 2008 R2. Serwer połączony wskazuje źródło danych bazy danych OLE na serwerze zdalnym.

  • Na serwerze połączonym tworzysz synonim dla tabeli.

  • Można utworzyć zdefiniowaną przez użytkownika funkcję, która używa synonimu, lub widok używający tego synonimu. Następnie należy uruchomić zapytanie względem funkcji zdefiniowanej przez użytkownika lub widoku.

    Uwaga Po uruchomieniu zapytania plan wykonywania jest buforowany.

  • Na serwerze zdalnym wykonywana jest operacja aktualizowania wersji schematu tabeli na serwerze połączonym. Na przykład można ponownie utworzyć indeks tabeli na serwerze zdalnym, aby zaktualizować wersję schematu tabeli na serwerze połączonym.

  • Uruchamiane jest kolejne zapytanie względem funkcji zdefiniowanej przez użytkownika lub widoku.

W tym scenariuszu zostanie wyświetlony komunikat o błędzie podobny do następującego:

Uwaga

Serwer: Komunikat 7359, Numer poziomu poziomu, Numer stanu stanu, Numer wiersza
Dostawca OLE DB "Nazwa dostawcy" dla serwera połączonego "Nazwa połączonego serwera" zgłosił zmianę wersji schematu między czasem kompilacji ("Czas kompilacji") a czasem wykonywania ("Czas wykonywania") dla tabeli "Nazwa tabeli połączonej".

Uwaga Nazwa dostawcy to symbol zastępczy nazwy dostawcy bazy danych OLE. Nazwa tabeli połączonej to symbol zastępczy reprezentujący nazwę tabeli znajdującej się na serwerze połączonym.

Przyczyna

Ten problem występuje, ponieważ istniejący plan wykonywania nie został poprawnie wyczyszczony. Powoduje to zmianę wersji schematu, ponieważ funkcja zdefiniowana przez użytkownika lub widok są ponownie kompilowane po uruchomieniu drugiego zapytania. Dlatego występuje błąd.

Rozwiązanie

Informacje o aktualizacji zbiorczej

SQL Server 2008 R2 z dodatkiem Service Pack 1

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

2544793 Pakiet aktualizacji zbiorczej 1 dla dodatku Service Pack 1 dla systemu SQL Server 2008 R2Uwaga Ponieważ 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:

2567616 Kompilacje SQL Server 2008 R2 wydane po wydaniu dodatku Service Pack 1 SQL Server 2008 R2

SQL Server 2008 R2

Poprawka rozwiązująca ten problem została po raz pierwszy opublikowana w aktualizacji zbiorczej 7. 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:

2507770 Pakiet 7 aktualizacji zbiorczych dla systemu SQL Server 2008 R2 Uwaga Ponieważ te kompilacje mają charakter zbiorczy, każda nowa wersja poprawki zawiera wszystkie poprawki i poprawki zabezpieczeń, które zostały uwzględnione w poprzedniej wersji poprawki dla 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

Dla programu SQL Server 2005 z dodatkiem SP3

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

2507766 Pakiet aktualizacji zbiorczych 15 dla SQL Server 2005 z dodatkiem SP3
Uwaga Ponieważ te kompilacje są zbiorcze, każda nowa wersja poprawki zawiera wszystkie poprawki i poprawki zabezpieczeń zawarte w poprzedniej wersji poprawki dla programu SQL Server 2005 z dodatkiem SP3. 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:

960598 Kompilacje SQL Server 2005 wydane po wydaniu dodatku SP3 SQL Server 2005

Dla programu SQL Server 2005 z dodatkiem SP4

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

2507769 Pakiet aktualizacji zbiorczej 3 dla systemu SQL Server 2005 z dodatkiem SP4
Uwaga Ponieważ te kompilacje są zbiorcze, każda nowa wersja poprawki zawiera wszystkie poprawki i poprawki zabezpieczeń zawarte w poprzedniej wersji poprawki dla programu SQL Server 2005 z dodatkiem SP4. 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:

937137 Kompilacje SQL Server 2005 wydane po wydaniu dodatku SP4 SQL Server 2005

Dla programu SQL Server 2008 z dodatkiem SP1

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

2497673 Pakiet aktualizacji zbiorczej 13 dla SQL Server 2008 z dodatkiem SP1
Uwaga Ponieważ te kompilacje są zbiorcze, każda nowa wersja poprawki zawiera wszystkie poprawki i poprawki zabezpieczeń zawarte w poprzedniej wersji poprawki dla programu SQL Server 2008 z dodatkiem SP1. 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:

970365 Kompilacje SQL Server 2008 wydane po wydaniu SQL Server 2008 z dodatkiem SP1

Dla programu SQL Server 2008 z dodatkiem SP2

Poprawka rozwiązująca ten problem została po raz pierwszy opublikowana w aktualizacji zbiorczej 3. Aby uzyskać więcej informacji dotyczących sposobu uzyskania 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 Baza wiedzy Microsoft Knowledge Base:

2498535 Pakiet aktualizacji zbiorczych 3 dla SQL Server 2008 z dodatkiem SP2
Uwaga Ponieważ te kompilacje są zbiorcze, każda nowa wersja poprawki zawiera wszystkie poprawki i poprawki zabezpieczeń zawarte w poprzedniej wersji poprawki dla programu SQL Server 2008 z dodatkiem SP2. 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:

2402659 Kompilacje SQL Server 2008 wydane po wydaniu SQL Server 2008 z dodatkiem SP2

Stan

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

Więcej informacji

Aby uzyskać więcej informacji na temat tworzenia synonimu przy użyciu języka Transact-SQL, odwiedź następującą witrynę sieci MSDN (Microsoft Developer Network):

Jak utworzyć synonim przy użyciu języka Transact-SQL